我一直在阅读 Effective Java,并决定尝试将我学到的一些知识付诸实践。我正在尝试有效地创建一个 Multimap<?, Condition<?> >
其中,键和值的通配符类型相同,但类型不同。
这是我正在看的书中的项目:Item 29
我并不想完全复制它。我意识到最大的不同是键并不直接代表链接中的值。在我的中,键代表值的通用类型。
所以我会做mmap.put(Class<Integer>, ConditionMapping<Integer>)
当我执行 get 时,我没有 ConditionMapping 的通用类型,所以我收到了未经检查的转换警告。
我有一个 get 方法,我想要签名 <T> List<Condition <T> >(Class<T> type)
由于类型删除,我唯一的选择是确保 condition.value 是类型 T 并构建一个新的对象列表吗?
我可以忽略未经检查的强制转换警告,但我只是尽量不这样做。有什么建议么?尖端?技巧?
最佳答案
没有办法表达这两个通配符应该捕获相同的类型。参见 this question对于类似的情况和一些可能的解决方案。
关于Java 按通用类型存储条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194929/