【问题标题】:Why are "static final" fields allowed in inner classes?为什么内部类中允许“静态最终”字段?
【发布时间】:2013-02-07 05:38:35
【问题描述】:

我对在 java 中使用内部类有疑问。这是我的代码。

代码:

public class Test{

      public class InnerClass{
             public static int num = 10;
      }       

}

这是不允许的。我收到错误消息“字段 num 不能声明为静态;静态字段只能在静态或顶级类型中声明”。

public class Test{

      public class InnerClass{
             public static final int num = 10;
      }       

}

但这是允许的。我还没有将InnerClass 声明为静态和顶级元素,但它是如何工作的?

【问题讨论】:

  • 错误没有告诉你答案吗?如果类是静态的或者是顶级的,则允许。
  • @KarthikT - 这不是同一个问题。
  • 这个问题更进一步,问为什么允许使用常量 (static final) 字段。
  • @KarthikT,请阅读我的问题。我在问为什么内部类中允许使用常量字段?
  • @bharathi 对不起,我的理解有误,如果关闭,将投票重新开放..

标签: java static inner-classes


【解决方案1】:

引用链接的答案。

8.1.2 Inner Classes and Enclosing Instances
...
内部类不能声明静态成员,除非它们是编译时常量字段(第 15.28 节)。

final 使它们在初始化后保持不变,= 10 是编译时常量值。因此是允许的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2015-02-24
    • 2021-10-01
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多