パラメータとして取得するクラスに一致するすべてのオブジェクトを返すメソッドを作成しようとしています。
public class Scenario extends View {
...
private Actor[] actors = new Actor[1024];
...
public Actor[] getActors(Class<?> cls) {
//Count actors corresponding to class cls
int cnt = 0;
for (int i = 0; i<actorsCount; i++)
if (actors[i] instanceof cls) cnt++;
//Build a new array;
Actor[] clsActors = new Actor[cnt];
//Fill it
for (int j = 0, k=0; j<cnt; k++)
if (actors[k] instanceof cls)
clsActors[j++] = actors[k];
return clsActors;
}
}
ただし、エラーが発生します:「-互換性のないオペランドタイプbooleanおよびClass <capture#1-of?extendsScenario>」
「アクター」は、私のスプライト、たとえばBird、Heroなどによって拡張されます。たとえば、計算のために、特定の時間にシナリオ上のすべてのBirdのリストを取得するというアイデアです。
ここで何が起こっているのか分かりますか?特定のオブジェクトが特定のクラスのインスタンスであるかどうかをテストするにはどうすればよいですか?