我有以下课程:

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());


谢谢。

最佳答案

这不编译,为什么呢?


因为没有从intIntegerKey的隐式转换。您无法在Java中创建用户定义的隐式转换。您被该语言定义的内容所困扰。

您要么必须以某种方式显式地持有IntegerKey,要么必须将地图的类型更改为Map<Integer, MyCache>

10-06 05:34