Подтвердить что ты не робот

Как комментировать с помощью @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());

}
4b9b3361

Ответ 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 есть собственные способы сделать это, например, поместить аннотацию на локальную переменную, но я не верю, что все компиляторы поддерживают это.