我有以下代码:
class Hello {
class Thing {
public int size;
Thing() {
size = 0;
}
}
public static void main(String[] args) {
Thing thing1 = new Thing();
System.out.println("Hello, World!");
}
}
Run Code Online (Sandbox Code Playgroud)
我知道Thing什么都不做,但我的Hello,World程序在没有它的情况下编译得很好.这只是我定义的类失败了.
它拒绝编译.我开始No enclosing instance of type Hello is accessible."创造一个新的东西.我猜是:
有任何想法吗?
我没想到在这个阶段我会在Java中遇到全新的语法,但是,我刚刚遇到了一些问题:
确切的上下文以及下面的代码应该做的事情是非常无关紧要的 - 它只是提供某种上下文.
我正在尝试综合在IT Mill Toolkit中创建一个事件,所以我写了这样一行:
buttonClick(new Button.ClickEvent(button));
Run Code Online (Sandbox Code Playgroud)
但是,Eclipse给出了以下错误消息:
不能访问类型为Button的封闭实例.必须使用Button类型的封闭实例限定分配(egxnew A(),其中x是Button的实例).
当我按如下方式重写上面的行时,它不会再抱怨了:
buttonClick(button.new ClickEvent(button)); // button instanceof Button
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:后面的语法是什么意思,确切地说,为什么第一个片段不起作用?什么是Java抱怨,以及它在第二个版本中做了什么?
背景信息:无论Button和Button.ClickEvent是非抽象公共类.