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

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

王林
Libérer: 2024-02-22 13:10:10
avant
842 Les gens l'ont consulté

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>
        }
Copier après la connexion

Toute aide serait formidable !

Solution de contournement

au lieu de redéclarer le type générique e。 node 构造函数应使用外部 dll<e> 类中的泛型类型 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;
        }
    }

}
Copier après la connexion

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal