This question already has answers here:
How to check if a subclass is an instance of a class at runtime? [duplicate]

(7个答案)


4年前关闭。





考虑类MinorClassAMinorClassB,它们都扩展了MajorClass。我有一个MajorClass的对象,我肯定知道它实际上是其子类之一的实例。

MinorClassA subclassedObj = new MinorClassA();
MajorClass obj = subclassedObj;

//------ More code -------------

if( subclassof(obj) == MinorClassA) //Something like this


我如何找出该对象的子类是什么?我无权访问subclassedObj,只能访问obj

编辑以澄清问题:我知道如何检查MinorClassA是否是MajorClass的实例,但不是这样。

最佳答案

听起来像您想要instanceof operator:


在运行时,如果RelationalExpression的值不为null,且instanceof运算符的结果为true,并且可以在不引发ClassCastException的情况下将引用强制转换为ReferenceType。否则结果为假。


因此,在您的情况下:

if (obj instanceof MinorClassA) {
    ...
}

09-30 17:49