【发布时间】:2016-04-14 10:23:20
【问题描述】:
考虑类MinorClassA 和MinorClassB,它们都扩展了MajorClass。我有一个MajorClass 的对象,我确信它实际上是它的一个子类的一个实例。
MinorClassA subclassedObj = new MinorClassA();
MajorClass obj = subclassedObj;
//------ More code -------------
if( subclassof(obj) == MinorClassA) //Something like this
我怎样才能知道该对象的子类是什么?我无法访问subclassedObj,只能访问obj。
编辑澄清:我知道如何检查MinorClassA 是否是MajorClass 的实例,但不是相反。
【问题讨论】:
-
if (obj instanceof classname) ... -
我怎样才能知道那个对象的子类是什么?编程到接口,你为什么要确定具体的类型?
-
@ElliottFrisch:“编程到界面”应该被视为一个很好的一般规则,而不是在任何情况下都遵循的教条。检查对象的执行时间类型可能有正当理由。
-
obj instanceof MinorClassA? -
@JonSkeet 当然,这就是我在评论中问的原因;我不知道 OP 的用例是什么。
标签: java class subclass instanceof