我要求Map
属于HashMap<String, Object>
类型。 Map中的值属于Object
类型,因为值具有不同的数据类型。虽然使用Object
有助于解决我的问题,但每次尝试get(key)
HashMap
时,我都必须进行类型转换。
是否有可用的库可以帮助我消除这些频繁的类型转换?
提前致谢!
答案 0 :(得分:3)
没有。如果您必须使用Object
类型存储地图的值,则无法进行投射。
您应该考虑在Map
中实现某些公共接口或具有公共基类的所有可能类型的值是否有意义。这将允许您用更具体的类型替换Object
,并减少(甚至消除)铸造的需要。
答案 1 :(得分:2)
你可以在自己的impl中隐藏演员:
public class FlexiMap extends HashMap<String, Object> {
public <T> T getType(String key) {
return (T)get(key);
}
}
Java可以在您使用它时推断出类型。
Boolean b = myMap.getType("foo"); // no cast