簡體   English   中英

Java在沒有泛型的情況下擴展Map.entry()

[英]Java extending Map.entry() without generics

我要做的是最終能夠運行此命令:

HashMap<FooClass> foo;

但是我無法在這里實現FooClass

我試過了

public class FooClass<String, List<String>> extends Map.Entry<String, List<String>> 

導致List<String>出現問題

如果我簡化並嘗試

public class FooClass<String, Integer> extends Map.Entry<String, Integer> 

然后我沒有接口預期在這里錯誤

Map.Entry<String, Integer>

因此,如果我將其更改為Map.Entry<>則需要一個標識符。 擴展Map.entry的正確方法是Map.entry

尚未嘗試編譯它們,但是通常在這種情況下,您不對聲明的類使用類型參數:

public class FooClass implements Map.Entry<String, List<String>> 

要么

public class FooMap extends HashMap<String, List<String>>

我正在猜測您要做什么,因為從您的問題來看我不清楚。 但是,如果您出於特定目的試圖提供HashMap實現,而該實現不公開泛型參數,則可以通過擴展參數化的HashMap來實現。

例如,假設您要執行的操作是將FooClass實例中的name屬性映射到實例本身。 您可以像這樣擴展HashMap:

public class FooClassMap extends HashMap<String, FooClass> { }

然后,您無需使用任何泛型語法就可以實例化新的實現,如下所示:

FooClassMap fooClassMap = new FooClassMap();

並像這樣使用它(假設它具有在構造函數中初始化的name屬性):

FooClass fooClass = new FooClass("fooClassName");
fooClassMap.add(fooClass.getName(), fooClass);

我希望這就是您要的東西,如果沒有,抱歉。

您無法為任何單個參數Foo編寫HashMap<Foo> HashMap需要兩個類型參數; 搞砸Map.Entry不會改變這一點。

暫無
暫無

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

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