我想做的最终是能够运行这个:
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
的正确方法?
答案 0 :(得分:2)
没有尝试编译这些,但通常你不会在这些情况下声明的类上使用类型参数:
public class FooClass implements Map.Entry<String, List<String>>
或
public class FooMap extends HashMap<String, List<String>>
答案 1 :(得分:1)
我正在猜测你要做什么,因为我的问题并不清楚。但是,如果您尝试为不会公开泛型参数的特定目的提出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);
我希望这就是你要找的东西,如果不是,那就很抱歉。
答案 2 :(得分:0)
您无法为任何单参数HashMap<Foo>
编写Foo
。 HashMap
需要两个类型参数;弄乱Map.Entry
不会改变这种情况。