Java中的映射是通过键的类型参数来限制值的。

30 浏览
0 Comments

Java中的映射是通过键的类型参数来限制值的。

在Java中有没有一种方法可以创建一个映射,其中值的类型参数与键的类型参数相关联?我想要实现的是类似下面的代码:

public class Foo {
    // 这个声明无法编译通过 - 应该是什么?
    private static Map, T> defaultValues;
    // 这两个方法没问题
    public static  void setDefaultValue(Class clazz, T value) {
        defaultValues.put(clazz, value);
    }
    public static  T getDefaultValue(Class clazz) {
        return defaultValues.get(clazz);
    }
}

也就是说,我可以将任何默认值存储在与Class对象关联的映射中,只要该值的类型与Class对象的类型匹配。我不明白为什么不能允许这样做,因为我可以确保在设置/获取值时类型是正确的。

编辑:感谢cletus的答案。实际上,我不需要在映射本身上使用类型参数,因为我可以确保get/set值的方法中的一致性,即使这意味着使用一些稍微丑陋的强制转换。

0