Java:为什么这不能编译?

发布于 2024-08-10 03:22:02 字数 311 浏览 3 评论 0原文

为什么这段代码不能编译?

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱给你人给你 2024-08-17 03:22:02

您可以通过将 B 设置为静态来解决此问题:

static class B { ...

这更接近地反映了 C++ 对嵌套类的处理方式。默认情况下(没有 static),B 的实例包含对 A 实例的隐藏引用。

有关差异的详细解释可以在 Java 内部类和静态嵌套类

You can fix this by making B static:

static class B { ...

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文