可能重复:
为什么 Java 禁止内部类中的静态字段?
我正在阅读规范,并了解到内部类中不可能有静态成员,这不是最终的编译时间常量。
class HasStatic {
static int j = 100;
}
class myInnerClassTest {
class Inner extends HasStatic {
static final int x = 3; // OK: compile-time constant
static int y = 4; // Compile-time error: an inner class
}
static class NestedButNotInner{
static int z = 5; // OK: not an inner class
}
interface NeverInner {} // Interfaces are never inner
}
而我从为什么我们可以有静态最终成员但不能在内部类中有静态方法?它可以从其所有者类继承静态成员。但为什么不应该呢?它伤害了 OOP 的什么校长?