![](/img/trans.png)
[英]In Java 8, can an interface default method access instance variables?
[英]Access instance variables from default method in inner interface
鉴于我们现在在Java 8中的interface
上有default
方法,是否有任何方法可以从内部(非static
) interface
的父类访问实例方法,例如:
public class App {
int appConst = 3;
public interface MyInstanceInterface {
default int myAppConst() {
return appConst;
}
}
}
我的interface
是不是static
,因此它应该能够访问appConst
在App.this
环境。
此代码失败,出现以下编译错误:
错误:无法从静态上下文引用非静态变量appConst
为什么?
原因是JLS§8.5.1 :
成员接口是隐式静态的(第9.1.1节)。 允许声明成员接口冗余地指定static修饰符。
内部interface
永远不能是非static
。 声明:
public class App {
...
public interface MyInterface {
...
}
}
完全等同于:
public class App {
...
public static interface MyInterface {
...
}
}
注意:这一直是这种情况,并且在Java 8中仅保持不变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.