gpt4 book ai didi

Java : Accessing Hidden Interface Field

转载 作者:行者123 更新时间:2023-11-30 03:13:31 24 4
gpt4 key购买 nike

如果字段被隐藏,如何使用实现类的实例(thissuper或instanceName,如果可能)访问接口(interface)的字段(默认情况下为public、static和final)?

package mypack;

public interface MyInterface {
String str = "MyInterface.str";
String inheritanceTest = "inherited";
}

我要访问的字段是 str

其他字段inheritanceTest是为了证明接口(interface)字段实际上是继承的(与接口(interface)静态方法不同)

package mypack;

public class Child implements MyInterface {

// Hiding the field
String str = "Child.str";


// Access test.
public String getParentStr() {
String result = "";

// result = MyInterface.super.str; // No enclosing instance of the type MyInterface is accessible in scope
// result = super.str; //str cannot be resolved or is not a field

return result;
}

// A method to check if the field is inherited or not.
public String getInheritedString() {
return this.inheritanceTest;
}
}

注释

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

  2. 如图所示,静态接口(interface)方法不会被继承,而静态接口(interface)字段会被继承。

  3. 非注释行不会生成任何编译时错误。

  4. 尝试为变量 result 赋值的注释行是那些产生编译时错误的(添加到行中)

  5. 不是询问如何静态访问接口(interface)字段。

澄清问题

是否可以使用类的实例(实例关键字,如 thissuper )访问已被实现类隐藏的接口(interface)字段?

最佳答案

Is it possible to access an interfaces field that have been hidden by the implementing class using an instance (instance keywords like this or super) of the class?

是的。不用使用 this 或 super,只需使用接口(interface)名称即可访问它。

MyInterface.str

关于Java : Accessing Hidden Interface Field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com