与泛型,接口和扩展混淆

时间:2012-10-06 06:40:28

标签: java generics interface comparable

所以我正在尝试编写通用链表和跳过列表的程序。我也希望在我使用时使用接口和超类,以备将来使用,但我似乎无法弄清楚如何使所有通用类型的所有内容协同工作。

这是我现在所拥有的基本想法:

我的列表ADT和节点类,一切都将延伸:

public class Node<K extends Comparable<K>> {
    K key;
    Object data;
    ...
}

public interface List<T> {
    public void insert(T value);
    public void delete(T value);
}

以链接列表为例:

public class LList<T extends Comparable<T>> implements List<LLNode<T>>
public class LLNode<K extends Comparable<K>> extends Node<K>

我这样做了吗?

编辑:更具体地说,当我尝试制作这个类的非常基本的实例时,我遇到了问题,例如......

List<String> linkedList = new LList<String>();
List[] lists = {linkedList};
sets[0].insert("cookie");

这给了我一个编译错误:java.lang.String无法强制转换为project.LLNode

1 个答案:

答案 0 :(得分:1)

我想到了三个选项:

首先,将使用List<String>

    public class LList<T extends Comparable<T>> implements List<T>
    {
        @Override
        public void insert(T value)
        ...
    }

这样就不再需要Node

,您的第二个选项:您可以保持实施的方式并使用List<LLNode<String>>

OR 终于如果您需要同时使用NodeList<String>,我认为这是您的需要(目前尚不清楚)问题),并在内部使用Node使用第一个选项,如果不可能,请更清楚您的需求,我会尽力帮助您。

问候。