2

我有一个返回字符串列表的条件List<String>

我有以下方法

 return criteria.list();

但是代码显示

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

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

 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
  • 如果我应该使用它,那么如何使用它?

谢谢

4

2 回答 2

1

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

在标准实现中确实没有必要,它的目的主要是为了调试,或者如果你收到一个你不确定的列表并且需要确保它是类型安全的(通常是因为第三方代码)或者已经使用了泛型并且此时您需要确保代码正确,因为它会在此处抛出异常并识别不正确的类型。

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

如果你要实现Collections.checkedList这两个参数是不是类型安全的列表和你想要一个列表的类,在这种情况下String.class不是List<String>

return Collections.checkedList(criteria.list(), String.class);
于 2015-04-22T01:05:45.480 回答
1

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

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

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

return Collections.checkedList(criteria.list(), Criterion.class);
于 2015-04-22T00:53:20.313 回答