0

我正在处理一个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 不明白,如果我的第一部分“如果”为真,则第二部分是可能的。有人可以说是否可以从对象中提取 Cle,以及如何?

谢谢你。

4

1 回答 1

3

使用显式强制转换,常见的成语是:

if (objets[i] instanceof Cle) {
   Cle aCle = (Cle) objets[i];
   aCle.getNumero(); // works
} else {
   ... // fail?
}

进一步观察并根据具体情况,您可以将getNumero()其作为抽象方法添加到Objet,而不是强制转换。如果您不能这样做,也许您可​​以研究泛型以使您的Objet实例供应商能够提供Cle实例。这又取决于具体情况。

于 2012-12-07T23:54:37.160 回答