当使用Hibernate Criteria </student>时,List类型的表达式需要未经检查的转换以符合List <student>

时间:2013-12-18 17:29:35

标签: java hibernate unchecked-conversion

我有这段代码提供了标题中提到的警告:

List<Student> studentList = session.createCriteria(Student.class)
    .add(Restrictions.eq("indexNumber", indexNum))
    .list();

我已阅读帖子How do I fix "The expression of type List needs unchecked conversion...'?,@ BrunoDeFraine提供了一个很好的解决方案:

public static <T> List<T> castList(Class<? extends T> clazz, Collection<?> c) {
    List<T> r = new ArrayList<T>(c.size());
    for(Object o: c)
      r.add(clazz.cast(o));
    return r;
}

然后我可以这样做:

List<SyndEntry> entries = castList(SyndEntry.class, sf.getEntries());

这很好用,但就我而言,我有Criteria作为参数,而不是类和集合。 我的问题是,这种方法可以适应标准作为参数,还是应该简单地使用@SuppressWarnings(“unchecked”)?

1 个答案:

答案 0 :(得分:1)

从评论中移出: 您想要转换Criteria对象吗?这是没有意义的。 criteria.list()返回一个List,因此您可以使用它。

castList方法是奇怪的,你没有获得任何编译时类型安全性(如果出现问题,它仍然只会在运行时失败),并且它可能会减慢速度,特别是如果清单很长。我只是使用@SuppressWarnings或接受警告。