我应该如何处理 criteria.list() 的未选中的投射



我有一个条件,即返回字符串列表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
  • 如果我应该使用它,那么如何使用它?

谢谢

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

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

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

如果要实现Collections.checkedList则两个参数是非类型安全的列表和需要列表的类,在本例中String.classList<String>

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

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

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

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

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

最新更新