Class definition inside method argument in Java?

前端 未结 4 1345
你的背包
你的背包 2020-12-16 01:39

I have come across Java code in this form for the first time:

object.methodA(new ISomeName() {
public void someMethod() {
//some code
}
});

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-16 02:00

    It's creating an anonymous class.

    Note that within anonymous class, you can refer to final local variables from within the earlier code of the method, including final parameters:

    final String name = getName();
    
    Thread t = new Thread(new Runnable() {
        @Override public void run() {
            System.out.println(name);
        }
    });
    t.start();
    

    The values of the variables are passed into the constructor of the anonymous class. This is a weak form of closures (weak because of the restrictions: only values are copied, which is why the variable has to be final).

提交回复
热议问题