当注释应用于方法时,这似乎过多。

如何将注解@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());

}

最佳答案

您可以将@SuppressWarnings用于单个变量声明:

public static List<String> foo(List<?> list) {
    List<String> bad = (List<String>) list;

    @SuppressWarnings("unchecked")
    List<String> good = (List<String>) list;
    return good;
}

但是,它必须在局部变量声明的位置:

10-05 18:07