我一直在试图创建一个包含2个键的自定义HashMap
。 用户用两个参数K
和V
创建我的课程的一个对象。班级由2 HashMaps
组成:本地扩展<Integer, V>
和密钥存储<K, Integer>
。 基本上,每个值有两个键:K
和Integer
。创建自定义多键HashMap
当用户想要获取某个项目时,他可以通过使用K
密钥或Integer
密钥来检索这两个项目。因此,举例来说,如果用户使用K
则系统会查找keyTable
对于这样关键的整数,然后使用该Integer
找到该值V
public class KeyMap<K, V> extends ConcurrentHashMap<Integer, V> {
private HashMap<K, Integer> keyTable = new HashMap<K, Integer>(10);
@Override
public V get(Object key) {
if (key instanceof V) {
return super.get(keyTable.get(key));
}
return super.get(key);
}
}
不过,我因此以前没有做过的参数我不明白是什么问题 - 我得到Cannot perform instanceof check against type parameter V. Use instead its erasure Object instead since further generic type information will be erased at runtime
在线if (key instanceof V) {
。
是否有可能实现我想要的系统?
不要继承;封装。 http://books.google.com/books?id=Ft8t0S4VjmwC&lpg=PR1&dq=effective%20java&pg=PA81#v=onepage&q&f=false – 2013-05-13 20:15:36
由于类型擦除,您需要接受'Class'实例。 –
SLaks
2013-05-13 20:16:04
听起来像是你想要一个bimap - http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/collect/BiMap.html – 2013-05-13 20:21:56