public class AAA{ private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
。
};
}; } 这段代码中,handler在这里是什么java语法,看起来挺怪的。mHandler是一个对象,为什么new Handler()后面要加大括号,又添加方法,可以这样吗?什么语法?
public void handleMessage(Message msg) {
。
};
}; } 这段代码中,handler在这里是什么java语法,看起来挺怪的。mHandler是一个对象,为什么new Handler()后面要加大括号,又添加方法,可以这样吗?什么语法?
上面代码中,Handler的对象是mhandler,不是有名字吗?为什么叫匿名类呢?
Handler不是匿名内部类
就是在AAA匿名内部类里定义了一个mhandler对象,而在mhandler对象里实现了handleMessage方法
AAA是普通类可以自定义一个类继承Handler,
MyHandler extends Handler{...}
Handler mhandler = new MyHandler();
两者功能一样,现在这种实现不需要MyHandler这个自定义的类名,所以匿名。
正解!
Myhandler是一个类,他在AAA的里面,所以是内部类。
mhandler是MyHandler的一个对象,他不是通过自己真正的类名MyHandler创建,而是通过其父类Handler,自己的类名被隐藏了,所以是匿名类。
加起来,就是匿名内部类了。呵呵,不知道这样你能理解不
public void onClick(View v){ .......
}
});
明白否?