2

引数として渡された 2 つのオブジェクトを比較しようとする場合: 最初はオブジェクトとして、2 番目はオブジェクトの配列として (同じ種類)。エラーを取得していますIncompatible conditional operand types Room and allRooms[]。からのオブジェクトと等しくwhileなくなるまで、サイクルで反復しようとしています。修正方法は?thisRoomTyperooms

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 に答える