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

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

王林
發布: 2024-02-22 13:10:10
轉載
843 人瀏覽過

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 建構子應使用外部 dll<e> 類別中的泛型類型 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
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板