What causes error quot;No enclosing instance of type Foo is accessiblequot; and how do I fix it?(是什么导致错误“无法访问 Foo 类型的封闭实例?我该如何解决?)
问题描述
我有以下代码:
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 程序编译得很好.只有我定义的类在我身上失败了.
I know Thing
does nothing, but my Hello, World program compiles just fine without it. It's only my defined classes that are failing on me.
它拒绝编译.我得到 No enclosure instance of Hello is access."
在创建新事物的行.我猜是:
And it refuses to compile. I get No enclosing instance of type Hello is accessible."
at the line that creates a new Thing. I'm guessing either:
- 我有系统级问题(在 DrJava 或我的 Java 安装中)或
- 我对如何在 java 中构建工作程序有一些基本的误解.
有什么想法吗?
推荐答案
static class Thing
将使您的程序工作.
事实上,您将 Thing
作为一个内部类,它(根据定义)与 Hello
的特定实例相关联(即使它从不使用或引用它),这意味着在范围内没有特定 Hello
实例的情况下说 new Thing();
是错误的.
As it is, you've got Thing
as an inner class, which (by definition) is associated with a particular instance of Hello
(even if it never uses or refers to it), which means it's an error to say new Thing();
without having a particular Hello
instance in scope.
如果您将其声明为静态类,则它是一个嵌套"类,不需要特定的 Hello
实例.
If you declare it as a static class instead, then it's a "nested" class, which doesn't need a particular Hello
instance.
这篇关于是什么导致错误“无法访问 Foo 类型的封闭实例"?我该如何解决?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:是什么导致错误“无法访问 Foo 类型的封闭实例"?我该如何解决?
基础教程推荐
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01