Java:访问隐藏接口字段

Java:访问隐藏接口字段,java,interface,field,Java,Interface,Field,如果字段是隐藏的,如何使用实现类的实例(this或super或instanceName,如果可能)访问接口的字段(默认为public、static和final) package mypack; public interface MyInterface { String str = "MyInterface.str"; String inheritanceTest = "inherited"; } 我要访问的字段是str 另一个字段inheritanceTest用于证明接口字段

如果字段是隐藏的,如何使用实现类的实例(
this
super
或instanceName,如果可能)访问接口的字段(默认为public、static和final)

package mypack;

public interface MyInterface {
    String str = "MyInterface.str";
    String inheritanceTest = "inherited";
}
我要访问的字段是
str

另一个字段
inheritanceTest
用于证明接口字段实际上是继承的(与接口静态方法不同)

注释

  • 我知道不鼓励使用实例访问静态成员,而不是静态访问它(
    Type.staticMemberNameOrSignature

  • 如图所示,静态接口方法不被继承,而静态接口字段被继承

  • 未注释的行不会生成任何编译时错误

  • 试图为变量
    result
    赋值的注释行是生成编译时错误的行(添加到该行)

  • 我不是询问如何静态访问接口字段

  • 澄清问题

    是否可以使用类的实例(例如
    this
    super
    )访问实现类隐藏的接口字段

    是否可以使用类的实例(实例关键字,如this或super)访问实现类隐藏的接口字段

    对。与其使用this或super,不如使用接口名来访问它

    MyInterface.str
    

    返回MyInterface.str它是一个接口这一事实并不重要。@SotiriosDelimanolis问题已更新。答案保持不变。JLS的报价涵盖了所有选项。其中只有两个与接口相关,完全限定名和转换到接口。
    
    MyInterface.str