2014-08-29 24 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