我試圖寫一個方法返回匹配它會作爲參數的類的所有對象:的instanceof類<?>參數
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;
}
}
不過,我得到一個錯誤:「 - 數不兼容類型布爾值和Class
'Actor'由我的小精靈擴展,比如Bird,Hero等。 這個想法是,例如,獲取所有的列表場景中的鳥在特定時間進行一些計算。
任何想法這裏發生了什麼?如何測試給定對象是否是給定類的實例?
非常感謝您抽出時間寫出一個例子。 –
不客氣!如果您在生產代碼中使用此示例,我會考慮將列表用作返回類型或臨時變量,因爲循環索引容易出錯。 –
如你所說,它確實看起來更加優雅,實際上整個場景機制在之前使用集合。 *我做了醜陋*,因爲集合分配東西(迭代器),我需要這個演員陣列的渲染循環。我現在完成了實施,並且我擺脫了大量的GC_FOR_MALLOC事件。這太遺憾了,因爲使用ArrayLists的代碼看起來很棒......(我之前沒有提到它,但是這是一款Android應用程序,因此適用於低規格設備) –