java 匿名内部类问题
发布网友
发布时间:2022-04-26 00:22
我来回答
共3个回答
热心网友
时间:2023-10-24 06:58
亲,这是匿名内部类哦! 为什么呢,请看下面解释:
private Handler handler =new Handler(){
上面这段代码的意思是, 构造一个匿名的子类,改子类实现了Handler接口。 你构造的子类是没有名字的,所以这当然是个匿名类啊!
那什么样的形式不是匿名类了? 请看下面:
class SubHandler implements Handler { .... }
...
private Handler handler = new SubHandler(); ...
这就不是匿名类了啊!
如果还不明白,请留言!
热心网友
时间:2023-10-24 06:59
是匿名内部类。说复杂了你难懂,这样说吧:
你上面的那种写法等同于这样写:
private Handler handler = new HandlerImpl();
class HandlerImpl implements Handler{
public void handleMessage(android.os.Message msg) {
if(msg.what==CHANGE_UI) {
iv.setImageBitmap((Bitmap) msg.obj);
}
};
}
这样明白了吗?追问你好,我记得匿名内部类应该是new Handler(){
public void handleMessage(android.os.Message msg)
{
.......
};
}; 你说的我明白,匿名内部类其实并不是匿名的,只是编译器帮我们命名了而已。
追答什么叫匿名内部类?private Handler handler = ,本来这个“=”后面应该写的是一个实现过Handler接口的实际的类名的(new 类名()),然后你再需要创建这个类,而使用匿名内部类之后,是不需要你指定具体的类名,直接通过new 接口(或Abstract class)的方式快捷撰写。
热心网友
时间:2023-10-24 06:59
你说的是对的,匿名就是没有一个名字指向这个对象,就是new出来的东西没名字,private Handler handler =去掉就是匿名