当注释应用于方法时似乎过多。
如何对单个演员而不是整个方法使用注释@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());
}
答案 0 :(得分:28)
您可以将@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)。
答案 1 :(得分:2)
您可以为该一行提取方法并抑制该行/方法。
许多工具/ ides都有自己的方法,例如将注释放在局部变量上,但我不相信所有编译器都支持这一点。