JavaBean和FieldMap 静态定义和动态构建孰优孰劣?

我们来看一个JavaBean

class Bond{
private String id;
private String name;

public void setId(String id){
this.id = id;
}

public String getId(){
return this.id;
}

public void setName(String name){
this.name = name;
}

public String getName(){
return this.name;
}

然后我们来看看对应的FieldMap如何描述:

FieldMap fm = new FieldMap("Bond").putField("id","060001").putField("name","06国债01");

看起来FieldMap简洁许多,毕竟一个是静态定义一个是动态构建,一个强类型一个弱类型。
假设现在要为Bond这个类型加入发行价格和发行日期这两个属性,这时候定义JavaBean时我们将会陷入一个考量,定义什么类型,比如发行日期我们定义Date呢还是字符串?价格定义double呢还是字符串?对于拿日期来做计算或比较的,显然定义Date更合理,如果拿来是显示的显然某种格式的字符串更合适。无论你怎么定义在遇到不同场景时,必然要来回折腾转换,极为不便。
那FieldMap如何处理这样的问题呢?
假设某个Field是发行日期,它的name是iDate,像下面这样我们拿到的是什么?

fieldMap.getField("iDate").getValue();

答案是构造这个FieldMap时放的什么值就是什么值,比如有可能是yyyyMMdd格式的日期字符串,有可能是java的Date类型,如果你仅仅调用getValue(),那么你得到的是当初放的那个值,但是因为你知道这个Field叫iDate,里面的值一定是个日期,所以你有时候说我希望要拿Date,有时候希望要拿某种格式的字符串。因此你不仅仅可以调用Field的getValue(),你还可以这样:

fieldMap.getField("iDate").getDateValue();
fieldMap.getField("iDate").getDateStringValue();
fieldMap.getField("iDate").getDateStringValue("yyyy/MM/dd");

第一个你将直接拿到Date类型,第二个你将拿到yyyy-MM-dd格式的字符串,第三个你将拿到你自定义格式的日期字符串,比如这里就是yyyy/MM/dd。
很明显看到这里我们发现FieldMap灵活便利的多,因为即使对于同一个类型,它也有很多不同的形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值