【问题标题】:java nested interfaces and inner classesjava嵌套接口和内部类
【发布时间】:2011-08-01 09:30:03
【问题描述】:
为什么 java 嵌套接口不能是非静态的?为什么内部类不能包含静态非最终成员?
我在浏览 Gosling 时遇到了这些问题,但还没有找到答案。
【问题讨论】:
标签:
java
interface
static
final
inner-classes
【解决方案1】:
如果嵌套类是非静态的(即内部类),这意味着它的每个实例都绑定到外部类的一个实例。由于接口没有自己的实例,将实现类绑定到外部对象似乎没有用,因此默认将其设置为静态似乎是合理的。
【解决方案2】:
我不确定为什么内部类中不能有静态非最终成员,但是由于静态成员没有绑定到任何特定的对象实例,所以无论它是在内部类中还是在外部类中都没有区别。
例如
class OuterClass {
private static int staticMember;
class InnerClass {
void incStatic() {
staticMember++;
}
}
}
您可以从内部类访问静态成员,就好像它在内部类中一样。