commons-lang3-3.3.2.jar提供一些基础的、通用的操作和处理
org.apache.commons.lang3.builder
SerializationUtils.clone(this)-实现深拷贝
@Override protected Object clone() throws CloneNotSupportedException { return super.clone();//浅拷贝,增加了一个指针指向已经存在的内存,修改引用变量值复制对象也改变 } @Override protected Object clone() throws CloneNotSupportedException { return SerializationUtils.clone(this);//深拷贝,就是增加一个指针并且申请一个新的内存 }
CompareToBuilder – 用于辅助实现Comparable.compareTo(Object)方法;
@Override public int compareTo(Version version) { return CompareToBuilder.reflectionCompare( this , version);//只比较值 注意对象包含引用对象时,引用对象也需要实现Comparable接口 }
注意:比较之前对象需要序列化,如果对象中含有引用属性变量并没有实现Comparable接口被创建后是无法比较的出现如下错误:
com.class... cannot be cast to java.lang.Comparable 因为实现Comparable接口就是用来制定比较策略,没有策略无法比较
EqualsBuilder – 用于辅助实现Object.equals()方法;
@Override public boolean equals(Object obj) {//两个对象相等当且仅当每个属性值都相等 return EqualsBuilder.reflectionEquals(this, obj, Boolean.FALSE); }
HashCodeBuilder – 用于辅助实现Object.hashCode()方法;
@Override public int hashCode() {//根据属性值生成hash码 return HashCodeBuilder.reflectionHashCode(0xfb187f93, 0xd642e94b,this); }
ToStringBuilder – 用于辅助实现Object.toString()方法;
@Override public String toString() {//只是进行输出格式转换 return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); }
ReflectionToStringBuilder – 使用反射机制辅助实现Object.toString()方法;
@Override public String toString() {//等同于ToStringBuilder.reflectionToString(this,ToStringStyle.DEFAULT_STYLE); return ReflectionToStringBuilder.toString( this ); }
比较:
ReflectionToStringBuilder: com.trunkbow.alipay.message.common.model.Version@1754ad2[major=6,minor=0,patch=1,messageTag=version] ToStringBuilder: com.trunkbow.alipay.message.common.model.Version@1754ad2[ major=6 minor=0 patch=1 messageTag=version ]
compareTo是值比较相等返回0
equals是对象比较相等返回true
ObjectUtils.clone(object);//复制对象
StringUtils.isEmpty(str);//是否为空
Date DateUtils.parseDate(dateStr, "yyyyMMdd hh:mm:ss");//字符串转化为日期
String DateFormatUtils.format(date, "yyyyMMdd hh:mm:ss");//日期转化为字符串
Integer NumberUtils.createInteger(typeStr);//字符串转化为整数