Shv*_*alb 0 java autoboxing boxing
我有以下课程:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用这个课程如下:
假设我有以下泛型:
Map<IntegerKey, MyCache> map = new HashMap<IntegerKey, MyCache>();
map.put(5, new MyCache());
Run Code Online (Sandbox Code Playgroud)
这不编译,为什么?我不想这样做:
map.put(new IntegerKey(5), new MyCache());
Run Code Online (Sandbox Code Playgroud)
谢谢.
这不编译,为什么?
由于没有隐式转换从int到IntegerKey.您无法在Java中创建用户定义的隐式转换.你坚持使用语言定义的那些.
你要么必须以IntegerKey某种方式明确地掌握,要么你必须改变地图的类型Map<Integer, MyCache>.