【问题标题】:Inner class and static context内部类和静态上下文
【发布时间】:2017-01-25 05:15:05
【问题描述】:

根据JLS §8.1.3,为什么 Java 不允许 Inner 类中的静态上下文?

【问题讨论】:

  • 不是说静态会导致编译时错误。有足够的理由吗?和相关的 - docs.oracle.com/javase/tutorial/java/javaOO/nested.html
  • 我想知道原因。它不会编译不是那个原因。我的问题是为什么它不会编译?
  • 您只是在问为什么,还是您正在编写的代码违反了这条规则并且您想知道替代方案?
  • 因为不清楚应该在哪个级别共享内部类的静态成员。从逻辑上讲,它需要与属于同一个外部类实例的所有内部类实例共享,但不可能轻松/有效地实现。
  • @cricket_007:我不是在问替代方案。我对 Java 为什么做出这样的限制很感兴趣。

标签: java jls


【解决方案1】:

内部类将属于其外部类的实例。

如果 Java 在内部类中接受静态非最终变量,那么对于外部类的不同实例,该静态变量可能会有不同的值。

它完全违背了静态上下文定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2013-11-23
    • 2010-09-09
    相关资源
    最近更新 更多