Rumah >Java >Jenis ketidakpadanan: tidak boleh menukar daripada DLL.Node kepada DLL.Node

Jenis ketidakpadanan: tidak boleh menukar daripada DLL.Node kepada DLL.Node

王林
王林ke hadapan
2024-02-22 13:10:10845semak imbas

Pilihan Soal Jawab java dibawakan oleh editor php Yuzi, soalan hari ini: Jenis tidak sepadan: Tidak dapat menukar daripada DLL.Node kepada DLL.Node. Masalahnya biasanya melibatkan ralat kompilasi yang disebabkan oleh pemadaman jenis generik dan perlu diselesaikan dengan penukaran jenis atau reka bentuk semula kod. Di Jawa, jenis sebenar generik dipadamkan selepas penyusunan, menyebabkan pengkompil tidak mengenal pasti jenisnya dengan tepat. Dengan memahami prinsip pemadaman generik dan penggunaan penukaran jenis yang fleksibel, masalah sedemikian boleh diselesaikan dengan berkesan.

Kandungan soalan

Saya cuba melaksanakan senarai terpaut dua kali dengan kelas nod bersarang. Disebabkan sifat generik kelas saya mendapat ralat tidak padan jenis. Memandangkan kelas bersarang bukan kelas statik, saya fikir ia akan menggunakan operator jenis generik dari kelas atas.

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>
        }

Sebarang bantuan pasti bagus!

Penyelesaian

bukannya mengisytiharkan semula jenis generik e。 node 构造函数应使用外部 dllca37468c879b0f5f3f64e26b1333f6f6 类中的泛型类型 e. Penyelesaiannya adalah seperti berikut:

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;
        }
    }

}

Atas ialah kandungan terperinci Jenis ketidakpadanan: tidak boleh menukar daripada DLL.Node kepada DLL.Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam