加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将强制转换添加到相同类型

发布时间:2020-12-15 04:49:25 所属栏目:Java 来源:网络整理
导读:我有一个外部类DoublyLinkedList T和两个内部类DoublyLinkedNode T以及DoublyLinkedListIterator T.它们的安排如下: public class DoublyLinkedListT extends CollectionT { private DoublyLinkedNodeT head; private DoublyLinkedNodeT tail; public class
我有一个外部类DoublyLinkedList< T>和两个内部类DoublyLinkedNode< T>以及DoublyLinkedListIterator< T>.它们的安排如下:

public class DoublyLinkedList<T> extends Collection<T> {

    private DoublyLinkedNode<T> head;
    private DoublyLinkedNode<T> tail;

    public class DoublyLinkedNode<T> {

        private DoublyLinkedNode<T> prev;
        private DoublyLinkedNode<T> next;
        T element;

    }

    public class DoublyLinkedListIterator<T> implements ListIterator<T> {

        private DoublyLinkedNode<T> current = head;

    }

}

现在,因为我在stackoverflow和其他来源的多个页面上听到/读取Iterator应该在相应的可迭代类中实现,如DoublyLinkedList< T>,我认为这样会更容易,因为您可以访问外部类字段.现在我想初始化DoublyLinkedListIterator< T>的实例,但是Eclipse在这一点上说:

private DoublyLinkedNode<T> current = head;

在DoublyLinkedListIterator< T>内那:

Type mismatch: cannot convert from DoublyLinkedList.DoublyLinkedNode< T > to DoublyLinkedList.DoublyLinkedNode< T >

解决这个问题的唯一方法是再次使用相同的类型:

private DoublyLinkedNode<T> current = (DoublyLinkedNode<T>) head;

为什么会这样?

解决方法

您已经声明了内部类DoublyLinkedNode和DoublyLinkdListIterator.
?内部类在范围内具有封闭类的所有泛型类型参数,因此T已经可用于它们.再次声明它们时,您将T隐藏在封闭类上.他们是不同的Ts.

删除隐藏外部T的T的重新声明(并且您的类应该实现Collection,这是一个接口),并让您的内部类使用外部T:

public class DoublyLinkedList<T> implements Collection<T> {

    private DoublyLinkedNode head;
    private DoublyLinkedNode tail;

    public class DoublyLinkedNode {
        private DoublyLinkedNode prev;
        private DoublyLinkedNode next;
        T element;
    }

    public class DoublyLinkedListIterator implements ListIterator<T> {
        private DoublyLinkedNode current = head;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读