簡體   English   中英

與泛型,接口和擴展混淆

[英]Confusion with generics, interfaces, and extending

因此,我正在嘗試為通用鏈表和跳過表編寫程序。 我還想在使用接口和超類時使用它,以備將來使用,但是我似乎無法弄清楚如何使所有類與所有泛型類型一起使用。

這是我現在擁有的基本思想:

我的列表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

我想了三個選擇:

首先 ,將與List<String>

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

這樣就不再需要Node

或者 ,您的第二個選擇:您可以保持實現方式並使用List<LLNode<String>>

或者最后,如果您同時需要使用Node和這個List<String> (我想這是您的需要)(從疑問中尚不清楚),並且僅在內部使用Node ,請使用第一個選項,如果不可能的話,請更清楚地了解您的需求,我會盡力幫助您。

問候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM