使用Javac @SuppressWarnings注释不会删除未经检查的警告

时间:2015-06-08 19:27:49

标签: java compilation warnings javac compiler-warnings

我无法使用未选中的强制转换功能删除警告。我相信这很奇怪,因为我在方法上添加了@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 update 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";
}

感谢。

1 个答案:

答案 0 :(得分:1)

这看起来像javac个错误。但它不会在1.8.0u45中重现。

快速搜索,可能与例如JDK-8016099JDK-8022144有关。人们可以做一个hg bisect来找到解决问题的确切变更集。

可能相关: