boo*_*ean 8 java arrays generics casting
我还是Java新手,所以我可能会遗漏一些明显的东西.
我有以下代码用于从我所有实体的列表中选择类类型:
public Array<?> PickEntities(Class<?> cls) {
Array<? super SpriteEntity> allEntities = new Array<Object>();
for (SpriteEntity entity : MyGame.AllEntities) {
if (entity.getClass() == cls) {
allEntities.add(entity);
}
}
return allEntities;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但这意味着当调用此方法时,我仍然需要将它强制转换到另一侧的类.例如:
asteroid = (Asteroid)PickEntities(Asteroid.class);
Run Code Online (Sandbox Code Playgroud)
我想要做的是使用我传递给我的PickEntities类(cls参数)的类,然后将返回的数组(allEntities)转换为该类型.
有没有办法做到这一点?每当我尝试它时,只告诉我'cls'不是一种类型,不能用于演员.
JB *_*zet 14
你的方法应该是通用的:
public <T extends SpriteEntity> List<T> pickEntities(Class<T> clazz) {
List<T> result = new ArrayList<T>();
for (SpriteEntity entity : MyGame.allEntities) {
if (entity.getClass() == clazz) {
result.add((T) entity);
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
请注意,我使用了标准集合类和标准Java命名约定.
归档时间: |
|
查看次数: |
4966 次 |
最近记录: |