[英]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.