匿名内部类
Android里经常用的时间监听代码就是用匿名内部类
一般都会这样写
sign.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent(Main2Activity.this, ZhuActivity.class);
startActivity(intent1);
}
});
下面的代码就是上面用到的匿名内部类,其实也是正常的一个类,里面有属性和方法,只不过下面的类没有类名,下面的类是View.OnClickListener的子类,重写了View.OnClickListener里的方法
好处就是不用再写一个类继承自View.OnclickListener,重写里面的方法,然后再把这个类放进上面的参数里了
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent(Main2Activity.this, ZhuActivity.class);
startActivity(intent1);
}
}
那比较符合我们理解的代码应该是什么样的呢
private void setListener(){
sign.setOnClickListener(new Listener1());
}
class Listener1 implements View.OnClickListener{
@Override
public void onClick(View v){
Intent intent1 = new Intent(Main2Activity.this, ZhuActivity.class);
startActivity(intent1);
}
}
使用时
Listener1 listener = new Listener1();
sign.setOnClickListener(listener);
这个例子我们发现要先写一个类继承或实现自父类,然后再调用时,需要先new出子类对象,然后再送进参数里使用,比较麻烦,所以当只使用一次时,就直接使用匿名内部类就好了
总结
匿名内部类在编译的时候系统自动起名为Outter$1.class,一般来说,匿名内部类用于继承其他类或是实现接口,并不需要添加额外的方法,只是对继承方法的实现或是重写