Что я должен делать с непроверенным приведением для crit.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
  • Если я должен использовать это, то как это использовать?

Спасибо

2 ответа

• Я не знаю, должен ли я действительно использовать Collections.checkedList

Это на самом деле не является необходимым в стандартных реализациях, его назначение, если в основном для отладки, или если вы получаете список, в котором вы не уверены, и вам необходимо убедиться, что он безопасен (обычно из-за стороннего кода) или используются универсальные Вы должны убедиться, что код корректен на этом этапе, так как он сгенерирует исключение и определит, что не является правильным типом.

• Если я должен использовать это, то как это использовать?

Если бы вы должны были реализовать Collections.checkedList два аргумента - это список, который не является безопасным с точки зрения типов, и класс, в котором вы хотите получить список, в данном случае String.class не List<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);
Другие вопросы по тегам