一周乱弹(3.27 )1,copyProperties 比较2, java Object... objects 可变参数

来源:互联网 发布:淘宝评论怎么没有了 编辑:程序博客网 时间:2024/05/21 21:42
一,copyProperties 比较
apache的BeanUtils
1,属性名相同,并且属性类型相同
点击(此处)折叠或打开
org.apache.commons.beanutils.BeanUtils.copyProperties(target, source)
结果:1,2(正确)


2,基本类型与包装类型之间的copy
结果:1,2(正确),这一点上,apache.BeanUtils比BeanCopier强大一点。


3,target的setter不规范
结果:不会copy,但是不会抛异常。


4,不同类型之间,会报异常: java.lang.IllegalArgumentException,参数不匹配,这样看来,apache的BeanUtils只检测属性名是否一样,没有做类型检查。
spring的BeanUtils
1,属性名相同,并且属性类型相同
点击(此处)折叠或打开
org.springframework.beans.BeanUtils.copyProperties(source, target)
结果:1,2(正确)


2,基本类型与包装类型之间的copy
结果:1,2(正确)


3,target的setter不规范
结果:1,2(正确),这是BeanCopier、apache的BeanUtils不具备的。


4,不同类型之间,会报异常:java.lang.IllegalArgumentException: argument type mismatch,跟apache的BeanUtils一样,没有做类型检查。




总结:
 
apache的BeanUtils稍微强一点,支持基本类型和包装类型之间的copy,但是不支持不规范setter,不同类型之间的copy也没做规避。
spring的BeanUtils在这2个里面是最强的,仅仅没做不同类型之间copy的规避。
也可自己根据实际需要自己写。
 
二, java Object... objects 可变参数
Object... objects,表示你可以传多个参数,具体多少个根据你自己的需求来定。
public void test(Object... objs){}
如果你的方法参数像上面那样定义的话,调用就非常的灵活,下面的调用均可:


test();
test("1");
test("1", "2");
test("1", "2", "3");


也就是说,你的参数可以是任意个。
而test方法里面获取参数时,则可以将objs当成一个数组:
if(objs != null && objs.length > 0){
System.out.println(objs[i]);

}

总结:1,控制台的错误要从下往上看,上面的错误都是下面引起的。

  2,代码写完之后,要赶紧提到服务器上去,放在服务器上是最保险的,自己在这上面吃过很多亏了。

0 0
原创粉丝点击