【发布时间】:2015-06-08 19:27:48
【问题描述】:
我无法通过未经检查的演员来删除我的警告。我相信这很奇怪,因为我在方法上添加了@SuppressWarnings("unchecked") 注释,但 Javac 仍然显示警告。
[unchecked] unchecked cast (List<Integer>) getObject(LIST);
return (List<Integer>) getObject(LIST);
required: List<Integer>
found: Object
我创建了一个示例,它会引发 2 个警告。我正在使用 Oracle JDK 1.7 更新 79。
package strange;
import java.util.List;
public class Strange implements Constants {
//Throw Warning
@SuppressWarnings("unchecked")
protected List<Integer> getList() {
return (List<Integer>) getObject(LIST);
}
@SuppressWarnings("unchecked")
protected List<Integer> getList2() {
return (List<Integer>) getObject(LIST);
}
//Throw Warning
@SuppressWarnings("unchecked")
protected List<Integer> getOtherList() {
return (List<Integer>) getObject(OTHER);
}
protected Object getObject(String key) {
return new Object();
}
}
interface Constants {
public static final String LIST = "list";
public static final String OTHER = "other";
}
谢谢。
【问题讨论】:
-
你能让你的标题更具描述性吗?
-
@kolossus,它在问题中说来自 Oracle 的 1.7u79。
-
我正在使用 Oracle JDK 1.7 更新 79
-
@rvillablanca,1.8.0_45 似乎无法重现。
-
你是对的,可能是 JDK 7 的错误??
标签: java compilation warnings javac compiler-warnings