Curly braces in “new” expression? (e.g. “new MyClass() { … }”)

前端 未结 3 678
鱼传尺愫
鱼传尺愫 2020-11-28 13:37

What do the curly braces do there ?

handler1 = new Handler() {

        public void handleMessage() {

       }
};

object = new Class

相关标签:
3条回答
  • 2020-11-28 13:40

    This is the syntax for creating an instance of anonymous class that extends Handler. This is part of Java.

    0 讨论(0)
  • 2020-11-28 13:40

    This is happned when you create the instance reference of the Interface. For example I want to create the instance of the interface Runnable with the class, then I can create it by creating an anonymous class for the same and override the run() method of the interface. You can understand well by looking at the another example other then you stated below.

    Runnable runnable = new Runnable() {
    
        public void run() {
            // TODO Auto-generated method stub
    
        }
    };
    
    0 讨论(0)
  • 2020-11-28 14:03

    Instantiates & returns reference of an anonymous subclass of current class.

    new Handler() {};
    
    Inside curly braces, definition of anonymous subclass (to be named as Handler$1 by compiler after compilation) can be specified.

    It is as equal as extending the Handler class explicitly but it requires name specification obviously of subclass & so it will not remain anonymous any longer.

    Following code might help to understand Instantiates & returns reference of an anonymous subclass of current class.
    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
    
    0 讨论(0)
提交回复
热议问题