我对 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;
}
这很好用,但这意味着在调用此方法时我仍然需要将其转换为另一端的类。例如:
asteroid = (Asteroid)PickEntities(Asteroid.class);
我想做的是使用传递给 PickEntities 类的类(cls 参数),然后将返回数组 (allEntities) 转换为那个类型。
有没有办法做到这一点?每当我尝试时,它都会告诉我“cls”不是一种类型,不能用于强制转换。
最佳答案
你的方法应该是通用的:
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;
}
请注意,我使用了标准集合类和标准 Java 命名约定。
关于java - 将类类型传递给方法,然后转换为该类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16625576/