Как комментировать с помощью @SuppressWarnings ( "unchecked" ) для одного акта вместо целого метода?
Это кажется чрезмерным, когда аннотации применяются к методу.
Как использовать аннотацию @SuppressWarnings ( "unchecked" ) для одиночного литья вместо целого метода?
В этом примере я только что закончил проверять, что бросок будет безопасным, и поэтому я приступаю к показу, но получаю раздражающее предупреждение.
@Override
public void execDetails()
{
Map<Integer, ResponseList<?>> responseMap =
new HashMap<Integer, ResponseList<?>>();
// ... omitted code ...
ResponseList<?> responseList = responseMap.get(requestId);
Class<?> elementType = responseList.getElementType();
if (elementType == ExecutionDetail.class)
((ResponseList<ExecutionDetail>)responseList).add(new ExecutionDetail());
}
Ответы
Ответ 1
Вы можете использовать @SuppressWarnings
для объявления одной переменной:
public static List<String> foo(List<?> list) {
List<String> bad = (List<String>) list;
@SuppressWarnings("unchecked")
List<String> good = (List<String>) list;
return good;
}
Он должен быть в точке объявления локальной переменной:
Аннотации могут использоваться как модификаторы в любом объявлении, будь то пакет (§7.4), класс (§8), интерфейс, поле (§8.3, §9.3), метод (§8.4, п. 9.4), параметр, конструктор ( §8.8) или локальную переменную (§14.4).
Ответ 2
Вы можете извлечь метод для этой строки и подавить для этой линии/метода.
У многих инструментов /ides есть собственные способы сделать это, например, поместить аннотацию на локальную переменную, но я не верю, что все компиляторы поддерживают это.