对于criteria.list(),我应该如何处理未经检查的强制转换?

时间:2015-04-22 00:41:10

标签: java hibernate hibernate-criteria unchecked-cast

我的条件是返回字符串列表List<String>

我在方法中有以下内容

 return criteria.list();

但代码显示

 Type safety: Unchecked cast from List to List<String>

避免添加@SuppressWarnings("unchecked") 并确保类型被安全转换(不确定我是否真的应该这样做),我读了this question并尝试将解决方案添加到我的代码中

 return Collections.checkedList(criteria.list(),List<String>);

但它显示另一个错误如下:

Multiple markers at this line
    - Type safety: Unchecked cast from List to List<String>
    - Syntax error on token ">", Expression expected after this 
     token
  • 我不知道我是否应该使用Collections.checkedList
  • 如果我应该使用它,那么如何使用它?

由于

2 个答案:

答案 0 :(得分:1)

如果方法criteria.list()返回List<String>,那么正确的语句将是

return Collections.checkedList(criteria.list(), String.class);

类似的情况适用于任何其他对象,例如如果方法返回类型为Criterion的自定义对象,则答案为

return Collections.checkedList(criteria.list(), Criterion.class);

答案 1 :(得分:1)

•我不知道我是否真的应该使用Collections.checkedList

实际上没有必要在标准实现中,其目的主要是用于调试,或者如果您收到的列表是您不确定的并且需要确保它是类型安全的(通常是因为第三方代码)或泛型有已经使用过,你需要确保代码在这一点上是正确的,因为它会在这里引发异常,并确定什么是不正确的类型。

•如果我应该使用它,那么如何使用它?

如果您要实现Collections.checkedList,则两个参数是非类型安全的列表以及您希望列出的类,在这种情况下String.class不是List<String>

return Collections.checkedList(criteria.list(), String.class);