在我的游戏引擎中,我有一个Entity
对象列表,其中有许多子类(例如Player
、Cube
、Camera
等)。我想要一个方法,在其中传递一个Class
对象,并最终得到一个相同类的 List - 例如,我想说这样的话:
List<Box> boxes = getEntities(Box.class);
到目前为止,我有这个:
public List<Entity> getEntities(Class<? extends Entity> t) {
ArrayList<Entity> list = new ArrayList<>();
for (Entity e : entities) {
if (e.getClass() == t) {
list.add(e);
}
}
return Collections.unmodifiableList(list);
}
但当然这会返回一个Entity
s 列表,这意味着列表中的每个实例都必须强制转换为Box
类。有没有办法在 Java 中正确地做到这一点?