Java 无法使用instanceof比较两个对象
尝试比较作为参数传递的两个对象时:第一个作为对象,第二个作为对象数组(相同类型)。获取错误Java 无法使用instanceof比较两个对象,java,oop,Java,Oop,尝试比较作为参数传递的两个对象时:第一个作为对象,第二个作为对象数组(相同类型)。获取错误不兼容的条件操作数类型Room和AllRoom[]。我试图在中迭代,同时循环,直到此房间类型不等于房间中的某个对象。如何修复它 public abstract class Room { ...} public class LightRoom extends Room {...} public class DarkRoom extends Room {...} 来电者: release(thisRoomT
不兼容的条件操作数类型Room和AllRoom[]
。我试图在中迭代,同时
循环,直到此房间类型
不等于房间
中的某个对象。如何修复它
public abstract class Room { ...}
public class LightRoom extends Room {...}
public class DarkRoom extends Room {...}
来电者:
release(thisRoomType, rooms)
带参数
private Room thisRoomType = this; // is defined in DarkRoom and LightRoom
private Room[] rooms; // is defined in DarkRoom and LightRoom
在方法上:
public synchronized void release( Room thisRoom, Room[] allRooms) {
try {
int j = 0;
while(thisRoom instanceof allRooms[j]){
jj++;
}
int nextRoom = jj;
...
}
}
请尝试以下方法:
while (j < allRooms.length && thisRoom.getClass().equals(allRooms[j].getClass()))
while(j
您的逻辑错误。instanceof
在传递对象实例时需要一个ReferenceType
。这是行不通的。你应该做的是:
包装
名称或类
名称或getClass
)李>
根据您的需要选择@RCola抱歉,您看到了我以前版本的答案。试用更新的。@ewernli我不确定这是否有问题。因为如上所述,OP的问题将始终循环,直到出现
ArrayIndexOutOfBoundsException
为止,非空房间
将始终是房间[]
中任何非空元素的实例。代码可能只有在遇到不同类型的房间时才有意义,我的答案就是这样做的。请参见,这是一个等待发生的ArrayIndexOutOfBoundsException
。while
条件必须包括jj