为什么java嵌套接口不能是非静态的?为什么内部类不能包含静态非最终成员?
我在通过Gosling时遇到了这些问题,但还没有找到答案。
答案 0 :(得分:8)
如果嵌套类是非静态的(即内部类),这意味着它的每个实例都绑定到外部类的实例。由于接口没有自己的实例,因此将实现类绑定到外部对象似乎没有用,因此默认情况下将其设置为静态似乎是合理的。
答案 1 :(得分:2)
我不确定为什么你不能在内部类中拥有静态非最终成员,但由于静态成员没有绑定到任何特定的对象实例,因此无论它是在内部类还是外部类中都没有区别。 / p>
E.g。
class OuterClass {
private static int staticMember;
class InnerClass {
void incStatic() {
staticMember++;
}
}
}
您可以从内部类访问静态成员,就像它在内部类中一样。