我没想到在Java的这个阶段还会遇到完全不同的语法, 但是我刚刚遇到了:
下面代码的确切上下文和它应该做什么不太相关 - 它只是为了提供一些背景。
我正在试图在IT Mill Toolkit中合成一个事件,所以我写了下面这行代码:
buttonClick(new Button.ClickEvent(button));
然而,Eclipse给出了以下错误信息:
Button的封闭实例不可访问。必须使用Button类型的封闭实例限定分配(例如,在x是Button实例的情况下使用x.new A())。
当我将上面那行代码重写如下时,它就不再报错了:
buttonClick(button.new ClickEvent(button)); // button instanceof Button
所以我的问题是:后一种语法确切地是什么意思,为什么第一个片段不起作用? Java在抱怨什么,第二个版本中它在做什么?背景信息:Button和Button.ClickEvent都是非抽象公共类。