我有一个方法可以从db获取一些对象:
public <T extends Persistable> List<T> getAllEntitiesEager(
Class clazz, String sortField, SortOrder sortOrder,
Map<String, Object> filters, boolean invalidate);
此方法返回类型clazz
中的对象列表。返回的所有对象都实现了接口Persistable
。现在我需要一个具体类型列表。这甚至可能吗?
示例:
班级UserEntity
实施Persistable
,我想做类似的事情:
List<UserEntity> userList = (List<UserEntity)
someObject.getAllEntitiesEager(UserEntity.class,...)
答案 0 :(得分:6)
为什么不将clazz
的类型更改为Class<T>
?
public <T extends Persistable> List<T> getAllEntitiesEager(Class<T> clazz,
String sortField, SortOrder sortOrder,
Map<String, Object> filters, boolean invalidate);
这样,返回的列表将与您传递clazz
类型的类型相同。
答案 1 :(得分: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);
是这是可行的:)
答案 2 :(得分:0)
使用此类代码。
List<? extends yourParentClass>
答案 3 :(得分:0)
如果您将Class clazz
更改为Class<T> clazz
,我认为您可以通过自动装箱执行此操作...我没有开发环境来测试此抱歉