如何修复代码以删除-Xlint:编译时未经检查的警告

时间:2012-10-10 04:39:21

标签: java generics compilation warnings

  

可能重复:
  How do I address unchecked cast warnings?

当我使用-Xlint编译时,我的程序编译并正常工作:未选中,但我正在寻求帮助来删除此警告。任何帮助表示赞赏!谢谢

这是警告:

java: warning: [unchecked] unchecked cast
found   : E
required: java.lang.Comparable<E>

                            ^^^^

提供警告的代码是:

public boolean contains(E obj) {

    Node<E> curr = head;

        while (curr != null) {
                return true;
            }

            curr = curr.next;
        }

        return false;
    }

3 个答案:

答案 0 :(得分:1)

如果您假设您的班级中的所有数据必须实施Comparable界面,那么您应该在类声明中添加它,否则您可能会得到{{1在没有实现此接口的类中使用此方法时。

ClassCastException

答案 1 :(得分:0)

您应该按照以下方式更改contains方法的签名,以避免在obj上调用compareTo方法时进行任何类型转换:

public <E extends Comparable<E>> boolean contains(E obj)
{
    return true;
}

这也将强制传递给包含方法的任何E已经实现了Comparable接口。

答案 2 :(得分:0)

这似乎是contains(...)方法的有缺陷的实现。对象不应该具有可比性,它们必须是等同的。只需使用equals(...)代替:

public boolean contains(E obj) {
    Node<E> curr = head;

    while (curr != null) {
        if (curr.data.equals(obj)) {
            return true;
        }
        curr = curr.next();
    }

    return false;
}