我该怎么自动装这个班?

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)

谢谢.

Jon*_*eet 6

这不编译,为什么?

由于没有隐式转换从intIntegerKey.您无法在Java中创建用户定义的隐式转换.你坚持使用语言定义的那些.

要么必须以IntegerKey某种方式明确地掌握,要么你必须改变地图的类型Map<Integer, MyCache>.