Heim > Java > Typkonflikt: Konvertierung von DLL.Node in DLL.Node nicht möglich

Typkonflikt: Konvertierung von DLL.Node in DLL.Node nicht möglich

王林
Freigeben: 2024-02-22 13:10:10
nach vorne
859 Leute haben es durchsucht

Eine Auswahl von Java-Fragen und Antworten des PHP-Editors Yuzi, heutige Frage: Typkonflikt: Konvertierung von DLL.Node in DLL.Node nicht möglich. Bei dem Problem handelt es sich in der Regel um Kompilierungsfehler, die durch das Löschen generischer Typen verursacht werden, und müssen durch Typkonvertierung oder Code-Neugestaltung behoben werden. In Java wird der tatsächliche Typ eines Generikums nach der Kompilierung gelöscht, was dazu führt, dass der Compiler den Typ nicht genau identifizieren kann. Durch das Verständnis des Prinzips der generischen Löschung und die flexible Verwendung der Typkonvertierung kann diese Art von Problem effektiv gelöst werden.

Frageninhalt

Ich versuche, eine doppelt verknüpfte Liste mit verschachtelten Knotenklassen zu implementieren. Aufgrund der generischen Natur der Klasse erhalte ich eine Fehlermeldung bezüglich der Typinkongruenz. Da es sich bei der verschachtelten Klasse nicht um eine statische Klasse handelt, dachte ich, sie würde den generischen Typoperator der obersten Klasse verwenden.

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>
        }
Nach dem Login kopieren

Jede Hilfe wäre großartig!

Workaround

statt Neudeklaration des generischen Typs e。 node 构造函数应使用外部 dll<e> 类中的泛型类型 e. Die Lösung lautet wie folgt:

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

}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonTypkonflikt: Konvertierung von DLL.Node in DLL.Node nicht möglich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage