簡體   English   中英

Java中未選中的Cast警告?

[英]Unchecked Cast warning in Java?

在這段代碼中,我在java中實現了一個通用鏈表。

public class LL<Item extends Comparable<Item>> {

我的Node類被定義為

private class Node{
private Item data;
private Node next;
public Node(Item data){
    this.data = data;
    next = null;
}
}

現在我的疑問是,我在編碼時不斷收到警告

 Node x = head, y = (Node) b.head;
Type safety: Unchecked cast from LL.Node to LL<Item>.Node

我應該忽略這一點,為什么編譯器會生成它。 它有解決方法嗎?

編輯:

b是LL類型,函數簽名看起來像

public void mergeAlternate(LL b){

head是LL類的私有實例變量

private Node head;

如果您正在創建一個通用實現,那么它也應該是內部通用的。

您缺少Node類的type參數。 它應該像這樣通用:

private class Node<T extends Comparable<T>> {
    private T data;
    private Node<T> next;
    public Node(T data){
        this.data = data;
        next = null;
    }

}

在使用該課程的地方,你可以這樣做:

new Node<Item> // ...

你的代碼看起來像這樣:

Node<Item> x = head, y = b.head;

而且你不會那樣得到警告。

然而,我的蜘蛛意識告訴我那里存在一些建築問題。 由於您沒有向我們展示您的所有代碼,因此我們無法為您提供任何幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM