Java奇怪的语法 - (匿名子类)

Nit*_*ani 5 java

我遇到了下面奇怪的语法,我从来没有见过这样的片段,它不是必需的,但很好奇才能理解它

new Object() {
    void hi(String in) {
        System.out.println(in);
    }
}.hi("strange");
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了输出 strange

谢谢

Kon*_*kov 9

你已经创建了一个匿名子类Object,它引入了一个方法,叫hi,之后就调用此方法与参数"strange".

我们假设你有:

class NamedClass extends Object {
    void hi(String in) { System.out.println(in); }
}

NamedClass instance = new NamedClass();
instance.hi("strange");
Run Code Online (Sandbox Code Playgroud)

如果只在一个地方需要这个类,那么就没有真正需要被命名等等 - 通过使它成为一个匿名类,你可以摆脱它的名字,定义和实例化类,并hi在一个表达式中立即调用该方法.