从内部类到外部接口的非静态访问的基本障碍
例:
interface Outer {
default String get() {
return "hi";
}
class Inner {
String got() {
return get();
}
}
}
这会产生错误
java:非静态方法 get() 不能从静态上下文中引用。
内部接口/类始终是静态的;与外部类不同,在外部类中,除非声明为静态,否则它是非静态的。
这就是今天和即将到来的java 8的情况。外部类和外部接口之间的这种差异是否有根本原因?
更新:阅读@Radiodef的评论后,我将内部接口更改为内部类。外部类不能包含非静态内部接口,因此该示例令人困惑。无论如何,内部类确实是我想要的。
更新:仅供参考。这是完全合法的:
class Outer {
String get() {
return "hei";
}
class Inner {
String got() {
return get();
}
}
}