繁体   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