我遇到了下面奇怪的语法,我从来没有见过这样的片段,它不是必需的,但很好奇才能理解它
new Object() {
void hi(String in) {
System.out.println(in);
}
}.hi("strange");
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了输出 strange
谢谢
你已经创建了一个匿名子类的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在一个表达式中立即调用该方法.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |