“新”表达中的卷曲括号? (例如“new MyClass(){...}”)

时间:2012-05-06 07:01:14

标签: java android class syntax curly-braces

花括号做什么?

handler1 = new Handler() {

        public void handleMessage() {

       }
};

object = new Class_Name() {};? 这种语法只存在于Android或Java上吗?它在Java中被称为什么?谢谢你的帮助。

3 个答案:

答案 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