有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在超类表中使用类的方法(Java)

我正在处理一个java项目,我有两个类(对于本主题,不在项目中):类“Objet”和类“Cle extensed 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,以及如何提取

多谢各位


共 (1) 个答案

  1. # 1 楼答案

    使用显式强制转换,常见的习惯用法是:

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

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