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>内那:
解决这个问题的唯一方法是再次使用相同的类型: 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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |