commons-lang中常用操作compareTo、equals、toString、clone、hashCode

本文深入探讨了commons-lang3-3.3.2.jar的功能,包括深拷贝、值比较、对象比较、hash码生成及字符串操作等实用方法。通过详细解释SerializationUtils、CompareToBuilder、EqualsBuilder、HashCodeBuilder、ToStringBuilder等工具类,帮助读者理解其在Java项目中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);//字符串转化为整数

转载于:https://www.cnblogs.com/atwanli/articles/5101960.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值