为什么静态字段(不是最终字段)在java的内部类中受到限制
可能的重复:
为什么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的什么原则?