java - 访问随机分配的对象

标签 java inheritance reference subclass superclass

鉴于以下情况:

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/

相关文章:

java - 重力形式签名 - 从 PHP 到 java

java - Android Studio 1.0.2 新项目 - 无法解析符号 'ActionBarActivity'

python - 引用变量

c++ - 将非引用作为引用传递,没有临时变量

java - Java 内存模型中的 happens-before 规则

matlab - 复制子类对象的父类(super class)部分

c++ - 指针、类项和范围

C++ 如何从虚拟类的模板化子类中获取数据?

c++ - 过早的优化还是我疯了?

java - 从适用于 Android 应用程序 API 17+ 的 CellSignalStrengthLte 获取 RSRP