基于相同接口的实现在类型之间转换

时间:2012-02-02 22:24:02

标签: java interface implements

如何构建一个应该存储给定接口元素的链表(Sortable)?

要构建的接口是:

public interface Sortable<T>

我对列表的实现称为public class DoublyLinkedList 它将数据存储在类public class DoublyLinkedListElement implements Sortable<Object>

的节点中

到目前为止一切顺利。但是还有另一个班级public class Product implements Sortable<Product>

是否可以使用DoublyLinkedList方法将Product类型的对象添加到DoublyLinkedList,而无需将类型转换为DoublyLinkedListElement。如果我这样做,我收到实际参数产品无法通过方法调用转换转换为DoublyLinkedListElement。

2 个答案:

答案 0 :(得分:0)

我不是肯定我理解这个问题,但我认为你需要做的是让你的add方法采用Sortable类型。然后你不必投射任何东西,你就可以添加Product或DoublyLinkedListElement。

DoubleLinkedList<Sortable> list = new DoublyLinkerList<Sortable>();
list.add(new Product());
list.add(new DoublyLinkedListElement());

答案 1 :(得分:0)

我毫不犹豫地完全回答了这个问题;但由于仿制药是一种后天的品味,可能就像:

public class DoublyLinkedList<T extends Sortable<T>> {
    private Element<T> first;
    private Element<T> last;
}

class Element<T extends Sortable<T>> {
    private T value;
    private Element<T> previous;
    private Element<T> next;
}