在Java中返回通用对象(例如Lists)的清洁解决方案

Jen*_*ing 1 java generics casting jpa

我正在使用JPA API(Hibernate支持),并具有以下代码:

public List<?> getGenericListing(Class<?> clazz) {
    //Other logic comes before...
    Query qry = entityManager.createNativeQuery(sql, clazz);
    return qry.getResultList(); //Returns an untyped list, part of JPA spec
}

public List<SpecificObject> getSpecificListing() {
    return (List<SpecificObject>) getGenericListing(SpecificObject.class);
}
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来返回List<?>除了特定对象列表的类型转换之外的其他方法?

Fla*_*vio 5

您可以将演员阵容放入getGenericListing:

public <T> List<T> getGenericListing(Class<T> clazz) {
    //Other logic comes before...
    Query qry = entityManager.createNativeQuery(sql, clazz);
    return (List<T>) qry.getResultList(); //Returns an untyped list, part of JPA spec
}
Run Code Online (Sandbox Code Playgroud)