当我使用-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;
}
答案 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;
}