首页  >  文章  >  类型不匹配:无法从 DLL.Node 转换为 DLL.Node

类型不匹配:无法从 DLL.Node 转换为 DLL.Node

王林
王林转载
2024-02-22 13:10:10832浏览

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 构造函数应使用外部 dllca37468c879b0f5f3f64e26b1333f6f6 类中的泛型类型 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删除