Maison  >  Article  >  Incompatibilité de type : impossible de convertir de DLL.Node en DLL.Node

Incompatibilité de type : impossible de convertir de DLL.Node en DLL.Node

王林
王林avant
2024-02-22 13:10:10832parcourir

Une sélection de questions et réponses Java apportées par l'éditeur php Yuzi, la question du jour : Incompatibilité de type : Impossible de convertir de DLL.Node en DLL.Node. Le problème implique généralement des erreurs de compilation causées par l’effacement de type générique et doit être résolu par une conversion de type ou une refonte du code. En Java, le type réel d'un générique est effacé après la compilation, ce qui empêche le compilateur d'identifier avec précision le type. En comprenant le principe de l'effacement générique et l'utilisation flexible de la conversion de type, de tels problèmes peuvent être résolus efficacement.

Contenu de la question

J'essaie d'implémenter une liste doublement chaînée avec des classes de nœuds imbriquées. En raison de la nature générique de la classe, j'obtiens une erreur d'incompatibilité de type. Étant donné que la classe imbriquée n'est pas une classe statique, j'ai pensé qu'elle utiliserait l'opérateur de type générique de la classe supérieure.

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

Toute aide serait formidable !

Solution de contournement

au lieu de redéclarer le type générique e。 node 构造函数应使用外部 dllca37468c879b0f5f3f64e26b1333f6f6 类中的泛型类型 e. La solution est la suivante :

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

}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer