繁体   English   中英

从内部接口的默认方法访问实例变量

[英]Access instance variables from default method in inner interface

鉴于我们现在在Java 8中的interface上有default方法,是否有任何方法可以从内部(非staticinterface的父类访问实例方法,例如:

public class App {

    int appConst = 3;

    public interface MyInstanceInterface {

        default int myAppConst() {
            return appConst;
        }
    }
}

我的interface是不是static ,因此它应该能够访问appConstApp.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM