用于实例化内部类的奇怪语法
2022-09-01 01:21:57
我没有想到在这个阶段我会在Java中遇到全新的语法,但是瞧,我只是遇到了一些东西:
确切的上下文和下面的代码应该做什么是无关紧要的 - 它只是为了提供某种上下文。
我试图在IT Mill Toolkit中综合创建一个事件,所以我写了这样一行:
buttonClick(new Button.ClickEvent(button));
但是,Eclipse给了我以下错误消息:
无法访问 Button 类型的封闭实例。必须使用 Button 类型的封闭实例(例如 x.new A(),其中 x 是 Button 的实例)限定分配。
当我按如下方式重写上面的行时,它不再抱怨了:
buttonClick(button.new ClickEvent(button)); // button instanceof Button
所以,我的问题是:后一种语法到底是什么意思,为什么第一个片段不起作用?Java在抱怨什么,它在第二个版本中做了什么?
背景信息:Button
和 Button.ClickEvent
都是非抽象的公共类。