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