java-ToStringBuilder介绍

java-ToStringBuilder介绍之前都是直接 toString 今天看到了 ToStringBuil 就想知道他的用处 简单介绍 1 项目中一般都需要打印日志 所有实体的 toString 方法都是用简单的 因为每 一个就会 new 一个 String 对象 这样如果系统内存小的话会暴内存 使用 ToStringBuil 就可以避免暴内存这种问题 ToStringBuil

之前都是直接toString,今天看到了ToStringBuilder就想知道他的用处。

简单介绍:

1、

项目中一般都需要打印日志,所有实体的toString()方法都是用简单的"+",因为每"+" 一个就会 new 一个 String 对象,这样如果系统内存小的话会暴内存。使用ToStringBuilder就可以避免暴内存这种问题。

ToStringBuilder的reflectionToString方法:

  logger.info(“请求数据:”+ToStringBuilder.reflectionToString(req));

2、

详细讲解

 系统中一般都要打印日志的,因为所有实体的toString()方法 都用的是简单的"+",因为每"+" 一个就会 new 一个 String 对象,这样如果系统内存小的话会暴内存(前提系统实体比较多)。使用ToStringBuilder就可以避免暴内存这种问题的。 
 ToStringBuilder类主要用于类的格式化输出。ToStringBuilder中append方法可以向该类添加基本类型、数组、和对象,只有添加的方法才会被toString输出。如: class TaxReturn { private String ssn; private int year; private String lastName; private BigDecimal taxableIncome; // get/set方法省略 public TaxReturn() { } public TaxReturn(String pSsn, int pYear, String pLastName, BigDecimal pTaxableIncome) { setSsn(pSsn); setYear(pYear); setLastName(pLastName); setTaxableIncome(pTaxableIncome); } public String toString() { return new ToStringBuilder(this).append("ssn", ssn).append("year", year).append("lastName", lastName).toString(); } public int hashCode() { return new HashCodeBuilder(3, 7).append(ssn).append(year).toHashCode(); } public boolean equals(Object pObject) { boolean equals = false; if (pObject instanceof TaxReturn) { TaxReturn bean = (TaxReturn) pObject; equals = (new EqualsBuilder().append(ssn, bean.ssn).append(year, bean.year)).isEquals(); } return equals; } public int compareTo(Object pObject) { return CompareToBuilder.reflectionCompare(this, pObject); } } public class MainClass { public static void main(String[] pArgs) throws Exception { TaxReturn return1 = new TaxReturn("012-68-3242", 1998, "O'Brien", new BigDecimal(43000.00)); TaxReturn return2 = new TaxReturn("012-68-3242", 1999, "O'Brien", new BigDecimal(45000.00)); TaxReturn return3 = new TaxReturn("012-68-3242", 1999, "O'Brien", new BigDecimal(53222.00)); System.out.println("ToStringBuilder: " + return1.toString()); } } 

2、ToStringBuilder的reflectionToString方法

 该方法主要是把类对应的基本属性和值输出来。如: 

public class MainClass {

public static void main(String[] args) { MyClass one = new MyClass("Becker", 35); MyClass two = new MyClass("Becker", 35); MyClass three = new MyClass("Agassi", 33); System.out.println("One>>>" + one); System.out.println("Two>>>" + two); System.out.println("Three>>>" + three); System.out.println("one equals two? " + one.equals(two)); System.out.println("one equals three? " + one.equals(three)); System.out.println("One HashCode>>> " + one.hashCode()); System.out.println("Two HashCode>>> " + two.hashCode()); System.out.println("Three HashCode>>> " + three.hashCode()); } 

}

class MyClass {

private String name = null; private int age = 0; public MyClass(String name, int age) { this.name = name; this.age = age; } public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } 

ToStringStyle参数说明:

  1. DEFAULT_STYLE 
    com.entity.Person@182f0db[name=John Doe,age=33,smoker=false]

  2. MULTI_LINE_STYLE 
    com.entity.Person@182f0db[ 
    name=John Doe 
    age=33 
    smoker=false 
    ]










  3. NO_FIELD_NAMES_STYLE 
    com.entity.Person@182f0db[John Doe,33,false]

  4. SHORT_PREFIX_STYLE (即截去了包名) 
    Person[name=John Doe,age=33,smoker=false]

  5. SIMPLE_STYLE 
    John Doe,33,false

附加:

无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数。你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现。 

  在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Websphere, Eclipse 等等。我们就从这个包开始介绍整个 common 项目。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212896.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:00
下一篇 2026年3月18日 下午7:00


相关推荐

  • 全网疯传“nano banana”,只需对话就能精准修改图片细节:Photoshop终结者来了?

    全网疯传“nano banana”,只需对话就能精准修改图片细节:Photoshop终结者来了?

    2026年3月15日
    3
  • String.Format使用方法

    String.Format使用方法

    2021年12月7日
    95
  • # SpringCloud集成 报错 An attempt was made to call a method that does not exist. The attempt was made

    # SpringCloud集成 报错 An attempt was made to call a method that does not exist. The attempt was madeSpringCloud集成报错Anattemptwasmadetocallamethodthatdoesnotexist.Theattemptwasmadefromthefollowinglocation:详细报错结果如下:原因是SpringCloud和spring-boot-starter-parent的版本配置不搭配解决方法Greenwich2.1.x(可用2.1.4.RELEASE)Finchley2.0.x(可用2.0.5.RELEASE)

    2025年6月14日
    3
  • 使用Jar命令压缩War包「建议收藏」

    使用Jar命令压缩War包「建议收藏」偶然看见这么一个介绍详细的说明,呵呵虽然经常用 1.首先是工具比如Eclipse很方便了。 2.用winrar之类的工具,把web-info目录,及跟它同级的所有目录及文件,打包成zip文件就行了,然后把扩展名改成war! 3Jar命令: 假定有一个Web应用:C:\myHome myHome/WEB-INF/…… myHome/files/…… myH

    2026年4月17日
    7
  • jsp实现图书管理系统

    jsp实现图书管理系统图书管理系统根据对图书管理业务的分析 给出图书管理系统功能设计如下 1 系统管理模块 系统管理包括用户登录 退出功能 2 借书规则管理模块 管理员可以对借书规则 可借多少天 可借多少本 超期一天罚款多少 信息进行修改和查看 读者可以查看借书规则 3 图书类型管理模块 管理员可以对图书分类信息进行增删改查操作 图书分类名称唯一 4 图书信息管理模块 管理员可以对图书信息进行增删改查操作 读者可以查看图书信息 5 读者信息管理模块 管理员可以对读者信息进行增删改查操作 读者登录后可以查看个人信息 以

    2025年11月16日
    7
  • java面试两年工作经验的_无经验应届生面试自我介绍

    java面试两年工作经验的_无经验应届生面试自我介绍动机:最近换了个公司,从三月底开始面,面到四月底,面了有快二十家公司。我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪个知识点今天又问了等等。四月中旬的时候,我就在构思要写一篇面经,主要是想着可能对那些跟我相同处境的人有点帮助,再者就是稍微记录下这为期一个月的面试过程。本文地址:http://blog….

    2022年8月10日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号