Что я должен делать с непроверенным приведением для 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);