[英]Cast default hibernate createSQLQuery to list of self-made class
[英]Convert error in self-made generic List class
這段代碼有一個轉換錯誤,我不確定為什么會發生。
錯誤是:
List.java:131: error: incompatible types: Comparable cannot be converted to T
this.insertAtFront(remove.firstNode.data);
它出現在使用List.List的.data的代碼的每一部分中。
我標記了執行錯誤的行。
有任何想法嗎?
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;
}
}
那是ListNode類:
public class ListNode<T extends Comparable<T>> {
T data;
ListNode nextNode;
public ListNode(T o){
this(o,null);
}
public ListNode(T o, ListNode node){
data = o;
nextNode = node;
}
public T getObject(){
return data;
}
}
當您查看List類時,您會發現firstNode和lastNode的定義都不包含通用類型信息!
所以將其更改為
ListNode<T> firstNode
這個問題應該消失了。 與創建“刪除”列表時相同。
省略通用信息會創建所謂的原始類型。 每次您都會收到警告。 不要忽略該警告-只需修復所有使用原始類型的地方!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.