2014-08-29 25 views
1

我有得到的來自DB某些對象的方法:演員名單列出具體類型的

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

這種方法從clazz類型返回對象的列表。返回的所有對象都實現了接口Persistable。現在我需要一個具體類型列表。這甚至有可能嗎?

例子:

的Class UserEntity實現Persistable,我想要做這樣的事情:

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

回答

5

爲什麼不改變clazz類型Class<T>

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 2014-08-29 15:41:58

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 clazz更改爲Class<T> clazz ...我沒有開發環境來測試這個對不起

+1

自動拳擊從哪裏來? – 2014-08-29 15:44:26

+0

什麼自動裝箱與此有關? – tmarwen 2014-08-29 15:44:52