2014-08-29 4 views
1

나는 DB에서 일부 개체의 얻을 방법이 있습니다캐스트 목록 콘크리트 형 목록으로

public <T extends Persistable> List<T> getAllEntitiesEager(
     Class clazz, String sortField, SortOrder sortOrder, 
     Map<String, Object> filters, boolean invalidate); 

이 방법은 유형 clazz에서 개체의 목록을 반환합니다. 리턴 된 모든 오브젝트는 인터페이스 Persistable을 구현합니다. 이제 구체적인 유형의 목록이 필요합니다. 이것은 가능한가?

예 :

더 클래스 UserEntityPersistable 구현하고 내가 그런 일하고 싶지 :

List<UserEntity> userList = (List<UserEntity) 
     someObject.getAllEntitiesEager(UserEntity.class,...) 

답변

5

이유는 단지 Class<T>clazz의 유형을 변경할 수 없습니다?

public <T extends Persistable> List<T> getAllEntitiesEager(Class<T> clazz, 
          String sortField, SortOrder sortOrder, 
          Map<String, Object> filters, boolean invalidate); 

이렇게하면 반환 된 목록은 clazz 유형을 전달한 것과 같은 유형이됩니다.

+0

아 ... bli 일 것임에 틀림 없습니다. nd : D. 명확히 해 주셔서 감사합니다! – VWeber

0

사용이 코드 유형입니다.

List<? extends yourParentClass> 
1

당신의 방법 서명이 Class<T> clazz 그렇게 반환 List가 같은 클래스 유형에서 함께합니다 일반 클래스 형을 선언해야합니다

public <T extends Persistable> List<T> getAllEntitiesEager(Class<T> clazz, String sortField, SortOrder sortOrder, Map<String, Object> filters, boolean invalidate); 

그리고 이 가능 :)

0

이다 나는 당신이 할 수있는 생각 Class clazzClass<T> clazz으로 바꾼다면 오토 박싱으로 이것을하십시오 ...이 미안을 시험 할 개발 환경이 없습니다

+1

어디에서 자동 권투는 오는가? –

+0

오토바이와 관련이있다? – tmarwen