我有以下代码:
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!");
}
}
我知道 Thing
什么都不做,但是我的 Hello, World 程序在没有它的情况下编译得很好。只有我定义的类在我身上失败了。
它拒绝编译。我在创建新事物的行得到 No enclosing instance of type Hello is accessible."
。我猜要么:
- 我有系统级问题(在 DrJava 或我的 Java 安装中)或
- 我对如何用 java 构建一个工作程序有一些基本的误解。
有任何想法吗?
原文由 coolpapa 发布,翻译遵循 CC BY-SA 4.0 许可协议
static class Thing
将使您的程序运行。事实上,你有
Thing
作为内部类,它(根据定义)与Hello
的特定实例相关联(即使它从未使用或引用它) ,这意味着在范围内没有特定的Hello
实例的情况下说new Thing();
是错误的。如果您将其声明为静态类,那么它就是一个“嵌套”类,不需要特定的
Hello
实例。