所以我做了两节课。


Rectangle
coloredRectangled extends Rectangle


然后我制作了一个矩形数组并插入了此检查:

if(tabel[i] instanceof coloredRectangle){}


Netbeans告诉我“不可转换的类型,需要彩色矩形,找到矩形”
我认为多态性可以奏效。我究竟做错了什么?

代码矩形:

public class Rechthoek implements Printbaar {
protected double lengte,breedte;
private Rechthoek[] tabel;

public Rechthoek(int lengte,int breedte){
    this.lengte=lengte;
    this.breedte=breedte;
}

public String getInfo(){
    return ("De lengte van de rechthoek is "+lengte+" en de breedte is "+breedte+" .");
}

public void schrijfTabel(Rechthoek[] tabel){
    for (int i = 0; i < tabel.length; i++) {
        tabel[i].getInfo();
    }
}


//错误代码位于以下方法中-Rechthoek = Rectangle和kleurRechthoek = ColoredRectangle

public boolean bevatKleur(Rechthoek[] tabel,String kleur){
    for (int i = 0; i < tabel.length; i++) {
        if(tabel[i] instanceof kleurRechthoek ){
            return true;
        }
    }
}

最佳答案

那是因为您(可能)无法从tabel[i]投射到coloredRectangle

JLS中指出,如果发生上述情况,instanceof将导致编译问题:


  如果将RelationalExpression强制转换为ReferenceType将是
  被拒绝为编译时错误,然后是关系的实例
  表达式同样会产生编译时错误。在这样的
  在这种情况下,instanceof表达式的结果永远不会
  真正。

09-16 00:18