花括号在那里做什么?
handler1 = new Handler() {
public void handleMessage() {
}
};
object = new Class_Name() {};
? 这种语法也只存在于 Android 或 Java 上?它在 Java 中叫什么?感谢您的帮助。
花括号在那里做什么?
handler1 = new Handler() {
public void handleMessage() {
}
};
object = new Class_Name() {};
? 这种语法也只存在于 Android 或 Java 上?它在 Java 中叫什么?感谢您的帮助。
这是创建扩展的匿名类Handler
实例的语法。这是Java的一部分。
当您创建接口的实例引用时会发生这种情况。例如,我想Runnable
用类创建接口的实例,然后我可以通过为它创建一个匿名类并覆盖run()
接口的方法来创建它。您可以通过查看您在下面说明的另一个示例来很好地理解。
Runnable runnable = new Runnable() {
public void run() {
// TODO Auto-generated method stub
}
};
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