首頁  >  文章  >  類型不符:無法從 DLL.Node 轉換為 DLL.Node

類型不符:無法從 DLL.Node 轉換為 DLL.Node

王林
王林轉載
2024-02-22 13:10:10832瀏覽

php小編柚子帶來的java問答精選,今日問題:類型不符:無法從 DLL.Node 轉換為 DLL.Node。這個問題通常涉及泛型類型擦除所引起的編譯錯誤,需要透過型別轉換或重新設計程式碼來解決。在Java中,泛型的實際類型在編譯後會被擦除,導致編譯器無法準確辨識類型。透過理解泛型擦除的原理和靈活運用類型轉換,可以有效解決這類問題。

問題內容

我正在努力實作帶有巢狀節點類別的雙向鍊錶。由於類別的通用性質,我收到類型不匹配錯誤。由於嵌套類別不是靜態類,我認為它將使用頂層類中的泛型類型運算符。

public class DLL <E> {
    
    public class Node<E>{
        private E element;
        private Node<E> prev;
        private Node<E> next;
        
        public <E> Node (E element, Node <E> prev, Node<E> next){
            this.element = element; // Error: Type mismatch: cannot convert from E to E
            this.prev = prev; // Error: Type mismatch: cannot convert from DLL<E>.Node<E> to DLL<E>.Node<E>
            this.next = next;// Error: Type mismatch: cannot convert from DLL<E>.Node<E> to DLL<E>.Node<E>
        }

任何幫助都會很棒!

解決方法

而不是重新宣告泛型類型 e。 node 建構子應使用外部 dllca37468c879b0f5f3f64e26b1333f6f6 類別中的泛型類型 e。解決辦法如下:

public class DLL<E> {
    
    public class Node {
        private E element;
        private Node prev;
        private Node next;
        
        public Node(E element, Node prev, Node next) {
            this.element = element;
            this.prev = prev;
            this.next = next;
        }
    }

}

以上是類型不符:無法從 DLL.Node 轉換為 DLL.Node的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除