我正在寻找一种方法来创建映射到混合类型的HashMap。Java映射混合类型
例如,下面将在Python工作(请注意,一个Python dict
是类似于Java HashMap
):
d = dict()
d["str"] = "This is a string"
d["flt"] = 1.23
d["int"] = 5
并且当访问d[x]
,适当的类型将被返回(串,浮点, int在这个例子中)。在Java中,我可以使用HashMap<String, Object>
,但我没有办法立即告诉每个对象是什么类型。
因此,我现在试图做的是创建一个持有对象的类,但也包含其原始类型信息,以便稍后可以向下转发它。例如:
public class MixedMap
public static class MixedType
{
public Class<?> cls;
public Object val;
public MixedType(Class<?> c, Object v)
{
this.cls = c;
this.val = v;
}
}
public static void main(String args[])
{
MixedType m1 = new MixedType(String.class, "This is a String");
System.out.println((m1.cls)m1.val);
}
}
请注意,这是我试图做:-) 因为它目前还没有编制抱怨m1 cannot be resolved to a type
。
所以我的问题是,我该如何解决这个问题?其他可以达到同样目标的方法也会受到欢迎,但请不要回答告诉我这样做会限制编译器的类型检查能力 - 我知道这一点并且可以。
在此先感谢。
我可以问一下:你会如何处理一次检索到的对象?我觉得通常有更好的方法来设计这个,以避免必须施放。 – 2012-04-10 00:17:13
即使您的类型信息存储在您的普通“对象”中,您在投出后又如何知道该怎么做? – 2012-04-10 00:19:50
当然,我将使用HashMap作为“配置”类型对象,其中用户将指定某些配置设置,并将其解析并放入此映射。在程序中的某些地方,我将检查是否设置了某个配置选项,如果是,则使用它,如果不使用默认值。需要混合类型的原因是一些配置选项将是字符串,其他浮点数,其他整数等。 – jedwards 2012-04-10 00:20:18