基于HashMap的简易通用数据模型

在代码中我们往往会写很多的数据模型类型,然后这些数据模型中很多使用率并不高,甚至是在一个很小的细节中使用一次后再也无人问津,就放在那里吃灰。

在使用这些数据模型时,往往也显得不够灵活,当数据字段增加时,需要去为数据模型增加属性,数据字段减少时往往也不会有人去删除属性。

这时我们通常就会使用HashMap来作为通用的数据模型,然而在使用会涉及大量的类型转换,使用起来十分不便,所以我基于HashMap对其进行了一点作为数据模型的简单优化,使其在使用时能既通用灵活,在类型的处理上也更加简便。

public class CrazyModel extends HashMap<String, Object> {
    private static final long serialVersionUID = 9016428745751329103L;

    public CrazyModel() {

    }

    public CrazyModel(Map<String, Object> data) {
        putAll(data);
    }

    public Integer fetchInt(String key) {
        if (!containsKey(key)) return null;
        Object value = get(key);
        if (value instanceof BigInteger){
            return ((BigInteger)value).intValue();
        }else if (value instanceof Double){
            return ((Double) value).intValue();
        }else if (value instanceof String){
            return Integer.parseInt(value.toString());
        }else {
            return (Integer)value;
        }
    }

    public String fetchString(String key) {
        if (!containsKey(key)) return null;
        return (String) get(key);
    }

    public Double fetchDouble(String key) {
        if (!containsKey(key)) return null;
        Object value = get(key);
        return value instanceof BigDecimal ? ((BigDecimal)value).doubleValue() : (Double)value;
    }

    public Float fetchFloat(String key) {
        if (!containsKey(key)) return null;
        Object value = get(key);
        return value instanceof BigDecimal ? ((BigDecimal)value).floatValue() : (Float)value;
    }

    public BigDecimal fetchBigDecimal(String key) {
        if (!containsKey(key)) return null;
        Object value = get(key);
        if (value instanceof Double || value instanceof Float) {
            BigDecimal decimal = new BigDecimal(value + "");
            return decimal;
        }
        return (BigDecimal)get(key);
    }

    public BigInteger fetchBigInteger(String key) {
        if (!containsKey(key)) return null;
        Object value = get(key);
        if (value instanceof Integer) {
            BigInteger integer = new BigInteger(value + "");
            return integer;
        }
        return (BigInteger)get(key);
    }

    /**
     * fetch anything what your wish
     * @return your wish bean
     */
    public <T> T fetchYourWish(String key){
        return (T)get(key);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值