从Map中提取时消除类型转换

时间:2014-12-25 13:41:28

标签: java hashmap

我要求Map属于HashMap<String, Object>类型。 Map中的值属于Object类型,因为值具有不同的数据类型。虽然使用Object有助于解决我的问题,但每次尝试get(key) HashMap时,我都必须进行类型转换。

是否有可用的库可以帮助我消除这些频繁的类型转换?

提前致谢!

2 个答案:

答案 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