在使用泛型的类上实现equals时避免警告

时间:2011-08-24 15:41:02

标签: java generics suppress-warnings

我有以下代码:

public abstract class A<T extends B<? extends A<T>>>{

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        A other = (A) obj; // warning here: "A is a raw type"
        // [...]
    }
}

如何在指定的行中避免“A是原始类型”和“类型安全:未选中的强制转换”?是否存在某种类型的黑客攻击或我的课程出错?

由于

3 个答案:

答案 0 :(得分:6)

如果比较A的参数化类型无关紧要,请声明并将其转换为A<?>

A<?> other = (A<?>) obj;

这将删除警告。

答案 1 :(得分:2)

将此注释放在它之前:@SuppressWarnings("unchecked")。有关详细信息,请参阅here

答案 2 :(得分:0)

您可以根据需要使用@SuppressWarnings注释。见here.