转换自制通用List类中的错误

时间:2017-07-02 12:24:39

标签: java list generics

此代码出现转换错误,我不确定为什么会发生。

错误是:

slideToggle

它出现在代码的每个部分,在List for ListNode中使用.data。

我标记了出错的行。

有什么想法吗?

List.java:131: error: incompatible types: Comparable cannot be converted to T
      this.insertAtFront(remove.firstNode.data);

这是ListNode类:

public class List<T extends Comparable<T>> {

private ListNode firstNode;
private ListNode lastNode;
private String name;

public List(String listName){
    name=listName;
    firstNode=lastNode=null;
}

public T removeAt(int k) throws ListIndexOutOfBound {
    List remove = new List();
    T o;
    if(k < 0 || k > checkSize()) throw new ListIndexOutOfBound();
    for(int i = 0; i < k; i++){
        try {
            remove.insertAtFront(firstNode.data);
            this.removeFromFront();
        } catch (Exception e) {
            while(!remove.isEmpty()){
                this.insertAtFront(**remove.firstNode.data**);
                remove.removeFromFront();
            }
            throw new ListIndexOutOfBound();
        }
    }
    **o = firstNode.data;**
    this.removeFromFront();
    while(!remove.isEmpty()){
        this.insertAtFront(**remove.firstNode.data**);
        remove.removeFromFront();
    }
    return o;
}
}

1 个答案:

答案 0 :(得分:0)

当您查看List类时,您会发现firstNode和lastNode的定义都不包含泛型类型信息!

所以改为

ListNode<T> firstNode 

这个问题应该消失。创建&#34;删除&#34;名单。

省略了通用信息,创建了所谓的原始类型。每次这样做时都会收到警告。不要忽视这个警告 - 只需修复你使用原始类型的所有地方!