1700452750
我们知道定义一个Bean必然会需要一个类,比如User、Person等,而且还必须在编译期定义完毕,生成.class文件,虽然Bean是一个有固定格式的数据载体,严格要求确实没错,但在某些时候这限制了Bean的灵活性,比如要在运行期生成一个动态Bean,或者在需要生成无固定格式的Bean时,使用普通Bean就无法实现了。我们可以使用BeanUtils包解决该问题,示例代码如下:
1700452751
1700452752
//动态Bean,首先定义Bean类
1700452753
1700452754
DynaProperty[]props=new DynaProperty[]{
1700452755
1700452756
new DynaProperty(“name”,String.class),
1700452757
1700452758
new DynaProperty(“age”,int.class)};
1700452759
1700452760
BasicDynaClass dynaClass=new BasicDynaClass(“people”,null, props);
1700452761
1700452762
//动态Bean对象
1700452763
1700452764
DynaBean people=dynaClass.newInstance();
1700452765
1700452766
/*people的get/set操作*/
1700452767
1700452768
//自由Bean
1700452769
1700452770
DynaBean user=new LazyDynaBean();
1700452771
1700452772
//直接定义属性和值
1700452773
1700452774
user.set(“name”,“张三”);
1700452775
1700452776
//定义属性名,限定属性类型为Map
1700452777
1700452778
user.set(“phoneNum”,“tel”,“021”);
1700452779
1700452780
user.set(“phoneNum”,“mobile”,“138”);
1700452781
1700452782
//属性类型为ArrayList
1700452783
1700452784
user.set(“address”,0,“上海”);
1700452785
1700452786
user.set(“address”,1,“北京”);
1700452787
1700452788
转换器
1700452789
1700452790
如果我们期望把一个Bean的所有String类型属性在输出之前都加上一个前缀,该如何做呢?一个一个进行属性过滤?或者使用反射来检查属性类型是否是String,然后加上前缀?这样是可以解决,但不优雅,看BeanUtils如何解决:
1700452791
1700452792
//一个简单的Bean对象
1700452793
1700452794
User user=new User(“张三”,18);
1700452795
1700452796
//转换工具
1700452797
1700452798
ConvertUtilsBean cub=new ConvertUtilsBean();
1700452799
[
上一页 ]
[ :1.70045275e+09 ]
[
下一页 ]