내 게임 엔진에는 많은 하위 클래스 (예 : Player
, Cube
, Camera
등)가있는 Entity
개체 목록이 있습니다. 내가 Class
객체를 전달하고 같은 클래스의 목록으로 끝내는 메소드를 원합니다. 내가 말하고 싶으면 이런 식으로 뭔가 : 지금까지매우 구체적인 Java 제네릭 문제 - 메서드에 전달 된 동일한 형식을 반환하는 방법?
List<Box> boxes = getEntities(Box.class);
I가이 : 있어야 목록에서 각 인스턴스를 의미 Entity
s의 목록을 반환
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);
}
그러나 물론
Box
클래스로 캐스트. Java에서 올바르게 수행 할 수있는 방법이 있습니까?
놀랍습니다! 나는 비슷한 것을 썼지 만, E는 엔티티를 <>의 각 쌍으로 확장한다. 따라서 액세스 한정자 다음에 제네릭 형식을 넣으면됩니까? – Javawag
@Javawag 정확히 - 메서드의 type 매개 변수를 선언 할 때 (수정 자 다음과 반환 유형 앞에) 상한 ('extends Entity') 만 지정하면됩니다. 일단 선언되면 다른 유형과 마찬가지로 참조 할 수 있습니다. –