如何在java中通过接口对象访问派生的类成员变量?

我是一名新的Java程序员。


我有以下类的层次结构:


public interface base


public interface Object1Type extends base


public interface Object2Type extends Object1Type


public class Object3Type implements Object2Type

      byte[] value;

我有另一个类,我有一个Object1Type a的对象;


我可以使用此对象a访问Object3Type类型的byte[]值成员吗?


qq_花开花谢_0
浏览 81回答 1
1回答

HUWWW

您可以使用类强制转换:public static void main(String args[]) {    Object1Type a = new Object3Type();    if (a instanceof Object3Type) {        Object3Type b = (Object3Type) a;        byte[] bytes = b.value;    }}但这是危险的,不推荐的做法。演员正确性的责任在于程序员。请参阅示例:class Object3Type implements Object2Type {    byte[] value;}class Object4Type implements Object2Type {    byte[] value;}class DemoApplication {    public static void main(String args[]) {        Object1Type a = new Object3Type();        Object3Type b = (Object3Type) a; // Compiles and works without exceptions        Object4Type c = (Object4Type) a; // java.lang.ClassCastException: Object3Type cannot be cast to Object4Type    }}如果这样做,请至少使用前面的 instanceof 运算符检查对象。我建议您在其中一个接口(现有或新)中声明一些 getter,并在类中实现此方法:interface Object1Type extends Base {    byte[] getValue();}interface Object2Type extends Object1Type {}class Object3Type implements Object2Type {    byte[] value;    public byte[] getValue() {        return value;    }}class DemoApplication {    public static void main(String args[]) {        Object1Type a = new Object3Type();        byte[] bytes = a.getValue();    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java