所以我做了两节课。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表达式的结果永远不会
真正。