无法使用instanceof比较两个对象

J.O*_*sen 2 java oop

当尝试比较作为参数传递的两个对象时:首先作为对象,第二个作为对象数组(相同类型).得到错误Incompatible conditional operand types Room and allRooms[].我试图循环迭代,while直到thisRoomType不等于某个对象rooms.怎么解决?

public abstract class Room { ...}
public class LightRoom extends Room  {...}
public class DarkRoom extends Room {...}
Run Code Online (Sandbox Code Playgroud)

呼叫者:

release(thisRoomType, rooms)
Run Code Online (Sandbox Code Playgroud)

带参数

private Room thisRoomType = this; // is defined in DarkRoom and LightRoom 
private Room[] rooms; // is defined in DarkRoom and LightRoom 
Run Code Online (Sandbox Code Playgroud)

在方法中:

public synchronized void release( Room thisRoom,  Room[] allRooms) {

        try {
            int j = 0;
            while(thisRoom instanceof allRooms[j]){     
                jj++;
            }
                        int nextRoom = jj;
...
    }
}
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 6

试试这个:

while (j < allRooms.length && thisRoom.getClass().equals(allRooms[j].getClass()))
Run Code Online (Sandbox Code Playgroud)

  • @ewernli我不确定这是不是一个问题.因为如上所述,OP的问题将_always_循环直到发生'ArrayIndexOutOfBoundsException`,非null的'Room`将始终是`Room []`中任何非null元素的实例.如果遇到不同类型的房间,代码可能才有意义,这就是我的回答. (2认同)