我正在处理一个java项目,我有两个类(针对本主题,不在项目中):类"Objet"和类"Cle-extends Objet(),方法"getNumero()"仅在Cle中。我主要写了这样的代码:
Objet[] objets = Scenario.objets;
for (int i=0;i<objets.length;i++)
{
if(objets[i].getClass() == modele.Cle.class
&& objets[i].getNumero() == salle.getPorte(direction).getNumero()){}
}
问题是在"if"的第二部分,类Objet没有方法"getNumero()",所以我检查Objet是否是Cle,但java不明白,如果我的"if"第一部分为true,那么第二部分是可能的。有人能说是否有可能从物体中提取Cle,以及如何提取吗?
谢谢。
使用显式强制转换,常见的习惯用法是:
if (objets[i] instanceof Cle) {
Cle aCle = (Cle) objets[i];
aCle.getNumero(); // works
} else {
... // fail?
}
进一步看,根据具体情况,可以将getNumero()
作为抽象方法添加到Objet
中,而不是强制转换。如果你不能做到这一点,也许你可以研究Generics,让你的Objet
实例供应商提供Cle
实例。这同样取决于具体情况。