Java:为什么这不能编译?
为什么这段代码不能编译?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
编译器报告:
enum declarations allowed only in static contexts.
但是当我将 Enum 放入 A 类中时,一切都正常。
这是相当令人惊讶的。我不认为我在 C++ 中遇到这个问题。
How come this code doesnt compile?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
Compiler reports:
enum declarations allowed only in static contexts.
But then when I put the Enum inside class A, everything is okay.
This is quite surprising. I dont think I have this problem in C++.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以通过将 B 设置为静态来解决此问题:
这更接近地反映了 C++ 对嵌套类的处理方式。默认情况下(没有
static
),B 的实例包含对 A 实例的隐藏引用。有关差异的详细解释可以在 Java 内部类和静态嵌套类。
You can fix this by making B static:
This mirrors more closely what C++ does with nested classes. By default (without
static
), instances of B contain a hidden reference to an instance of A.A good explanation of the differences can be found at Java inner class and static nested class.