【发布时间】:2019-05-30 12:00:52
【问题描述】:
我正在使用类型对填充 HashMap 对象
<String, Class<Ancestor>>,其中Ancestor 是一些自定义类。背后的想法是用微服务名称实例化一个对象。
我在这样输入时遇到编译错误:
已编辑
map.put("some label", Descendant.class);
很明显HashMap 类需要一个真正的Ancestor 类,而不是任何扩展Ancestor 的Descendant 类。
由于我有几十个不同的后代类(微服务),有人能告诉我如何使用 HashMap 避免这种限制吗?
我尝试在 HashMap 声明中使用 Class<?> 而不是 Class<Ancestor>。但是在调用微服务时,Eclipse 会触发强制转换警告
Class<Ancestor> a = (Class<Ancestor>) map.get("some label");
奇怪的警告说:
Type safety: unchecked cast from Class <capture#151-of ?> to Class <Ancestor>
【问题讨论】:
-
对于该警告,请提供完整的minimal reproducible example。就像声明该映射的简单方法一样,添加一个值并检索它。
-
这是 Ecilpse IDE 在编辑时的警告。我可以在 Eclipse 中使警告静音,但我更喜欢更清洁的解决方案。
-
我知道警告。但同样:请认真阅读minimal reproducible example 并相应地增强您的问题。你展示了一小部分代码,但这为你的代码中没有显示的东西留下了一个开放的空间。
标签: java inheritance casting hashmap