我有以下课程:
public class IntegerKey extends Number implements Comparable<IntegerKey> {
private Integer m_key;
public IntegerKey(Integer key) {
m_key = key;
}
public IntegerKey(int key) {
m_key = key;
}
}
我想使用此类作为跟随:
假设我具有以下泛型:
Map<IntegerKey, MyCache> map = new HashMap<IntegerKey, MyCache>();
map.put(5, new MyCache());
这不编译,为什么?我不想做:
map.put(new IntegerKey(5), new MyCache());
谢谢。
最佳答案
这不编译,为什么呢?
因为没有从int
到IntegerKey
的隐式转换。您无法在Java中创建用户定义的隐式转换。您被该语言定义的内容所困扰。
您要么必须以某种方式显式地持有IntegerKey
,要么必须将地图的类型更改为Map<Integer, MyCache>
。