2

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

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;
...
    }
}
4

2 回答 2

6

试试这个:

while (j < allRooms.length && thisRoom.getClass().equals(allRooms[j].getClass()))
于 2012-04-30T19:59:02.047 回答
2

你的逻辑是错误的。
instanceof预计ReferenceType您正在传递一个对象实例 allRooms[j]。这永远行不通。
你应该做的是:

  1. 比较package名字或
  2. class姓名或
  3. 与具体类 ( getClass) 进行比较。

根据你的需要选择

于 2012-04-30T20:13:21.983 回答