花括号做什么?
handler1 = new Handler() {
public void handleMessage() {
}
};
object = new Class_Name() {};
?
这种语法只存在于Android或Java上吗?它在Java中被称为什么?谢谢你的帮助。
答案 0 :(得分:31)
这是用于创建扩展Handler
的{{3}}实例的语法。这是Java的一部分。
答案 1 :(得分:3)
创建接口的实例引用时,这很开心。
例如,我想用类创建接口Runnable
的实例,然后我可以通过创建相同的匿名类来创建它,并覆盖接口的run()
方法。你可以通过查看下面另一个例子来理解你。
Runnable runnable = new Runnable() {
public void run() {
// TODO Auto-generated method stub
}
};
答案 2 :(得分:0)
new Handler() {};
在花括号内,可以指定匿名子类的定义(编译后将由编译器命名为 Handler $ 1 )。
以下代码可能有助于理解实例化并返回当前类的匿名子类的引用。它等同于显式扩展 Handler 类,但是它显然需要指定子类的名称,因此它将不再保持匿名。
class Main{
int a = 5;
void func(){}
void meth(){
Main ref2 = new Main() {
void func(){
System.out.println(a);
}
};
ref2.func();
}
public static void main(String[] args) {
Main mm = new Main();
mm.meth();
}
}
//5