当我将 Comparable 接口与通用或参数化列表一起使用时,我会收到未经检查的强制转换警告。我可以使用 ObjectList 进行比较,但不能使用通用列表。这是我的开发,首先使用 ObjectList,然后使用通用列表。
这是我的 ListNode 类定义的片段:
public class ListNode {
private Object info;
private ListNode next;
和我的 ObjectList 类定义的片段:
public class ObjectList {
private ListNode list;
和我的 Comparable 界面:
public interface Comparable {
public int compareTo(Object o);
}
我的 ObjectList 类中有一个方法,可以毫无问题地将 Object 参数与 ListNode 中的 Object 进行比较。这是比较代码:
if (((Comparable)o).compareTo(p.getInfo()) == 0)
我现在正在尝试创建一个通用 List 类并进行类似的比较。这是我的通用 ListNode 类定义的片段:
public class ListNode<Type> {
private Type info;
private ListNode<Type> next;
和我的通用 List 类定义的片段:
public class List<Type> {
private ListNode<Type> list;
和我的通用 Comparable 接口:
public interface Comparable<Type> {
public int compareTo(Type t);
}
当我尝试与我的 ObjectList 类进行相同的比较时,我从我的通用 List 类中收到以下未经检查的强制转换警告:
List.java:239: 警告: [unchecked] unchecked cast found : Type required: Comparable
if (((Comparable<Type>)t).compareTo(p.getInfo()) == 0)
有什么想法吗?
这是一些简化的代码:
public class List<Type> {
public class ListNode<Type> {
private Type info;
private ListNode<Type> next;
public ListNode() {
info = null;
next = null;
}
}
private ListNode<Type> list;
public List() {
list = null;
}
public boolean contains(Type t) {
ListNode<Type> p = list;
while (p != null && (((Comparable<Type>)t).compareTo(p.info) != 0))
p = p.next;
return p != null;
}
}
public interface Comparable<Type> {
public int compareTo(Type t);
}
向列表类添加有界参数:
public class List<Type extends Comparable<Type>> {
解决了警告问题。但是创建一个 String 对象列表会产生这个错误:
类型参数 java.lang.string 不在其范围内