鉴于以下情况:
class ClassA
class ClassA1 extends ClassA
class ClassA2 extends ClassA
class ClassA3 extends ClassA
ClassA1 a1 = new ClassA1()
ClassA2 a2 = new ClassA2()
ClassA3 a3 = new ClassA3()
ClassA a = either a1, a2, or a3 (programmed to be randomly chosen by JVM)
如果对子类对象(“a1”、“a2”或“a3”)的引用在运行时仅分配给父类(super class)引用变量“a”,我该如何编写一个“if”语句来实现:如果'a'引用a1,访问a1的指定字段(不是从a继承的)?任何有关此问题的帮助将不胜感激。
最佳答案
使用instanceof
运算符和转换。
if (a instanceof ClassA1) {
((ClassA1) a).someMethodThatsOnlyInA1();
}
关于java - 访问随机分配的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353939/