安卓开发中经常会遇到匿名类(和匿名内部类)的使用,那么匿名类和一般使用的类有什么不同呢?
实现的功能相同,但使用匿名更简洁方便。 从形式上来说,感觉像是新闻的接口和班级,但我们
接口记住new不能出现,并重新编写内部所需接口的方法。 new现在给出了实现接口
方法的对象,但看不到此对象的类名,因此称为匿名类。 下面是具有相同功能的两个代码,分别用上述两种写法
实现:
匿名类
形式如下。 新冠
1 button.setonclicklistener (监听器);
2
3 private view.onclicklistenerlistener=new view.onclick listener (
4 {
5 @Override
6公共语音链接(查看) )。
7 {
8 string phonenum=phone edittext.gettext ().toString );
9 intent intent=new intent (Android.intent.action.call ),uri.parse ) tel : (phonenum );
10开始活动(英特尔);
11 }
12 }; 这里需要分号
自定义接口的类:
button.setonclicklistener (newbuttonlistener ) );
privatefinalclassbuttonlistenerimplementsview.onclick listener
{
公共语音在线(查看) ) ) ) )。
{
edittext移动性文本=(edittext ) findviewbyid(r.id.mobile );
string mobile=mobile text.gettext ().toString );
Intent intent=new Intent (;
intent.set action (Android.intent.action.call );
intent.setdata (uri.parse (tel : ) mobile );
开始活动(intent;
}
}
匿名类与匿名内部类不同
匿名类与匿名内部类不同。 后者也经常使用。 匿名内部类是内部类的一种,使用起来更简单,但并不是在任何情况下都需要使用。
thinkinginjava3th说:
简而言之,匿名内部类是未命名的内部类。 在什么情况下需要使用匿名内部类? 如果满足以下几个条件,则使用匿名内部类是比较
适当的:
只使用类的一个实例。
班级在定义后马上使用。
类非常小(SUN建议不超过4行代码) )。
给类命名并不意味着代码更容易理解。
使用匿名内部类时,请注意以下原则:
匿名内部类不能有构建方法。
匿名内部类不能定义静态成员、方法和类。
匿名内部类不得为公共、受保护、私有或静态。
只能创建一个匿名内部类的实例。
匿名内部类必须位于new的后面,以便隐式实现接口或实现类。
由于匿名内部类是局部内部类,所以局部内部类的所有限制都是有效的。
向//方法返回匿名内部类
公共类parcel 6
{
publicContentscont (
{
返回新内容(
{
私有Inti=11;
公共空闲() )
{
returni;
}
(; 这里需要分号
}
publicstaticvoidmain (字符串[ ] args ) )。
{
Parcel6p=newParcel6(;
Contentsc=p.cont (;
}