ToStringBuilder介绍

ToStringBuilder简单介绍

ToStringBuilder是用于构建一个类的toString字符串的工具类,提供了多种不同的格式,同时还能自定义打印哪些变量。

ToStringBuilder主要方法

  • append()方法: 该方法用于自定义添加需要打印哪些变量,只有使用append添加的变量才会在toString函数中打印。
  • reflectionToString()方法: 该方法使用反射机制打印一个类中的所有变量,该函数还提供一个变量style,用于指定使用什么样的格式打印变量,几种不的style将在下面介绍。

使用示例

下面的代码使用了ToStringBuilder的append方法将index变量添加进去

package com.xiaomi.test;

import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * @author qifuguang
 * @date 15/5/10 22:39
 */
public class Subject {
    private int index;
    private String name;

    public Subject(int index, String name) {
        this.index = index;
        this.name = name;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this).append("index", index).toString();
    }

    public static void main(String[] args) {
        System.out.println(new Subject(1, "subject1").toString());
    }
}

运行结果如下:

可以看到toString仅仅打印了index,但是并没有打印name,所以只有append添加的变量才会被打印。

下面的代码使用了ToStringBuilder的静态方法reflectionToString打印

package com.xiaomi.test;

import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * @author qifuguang
 * @date 15/5/10 22:39
 */
public class Subject {
    private int index;
    private String name;

    public Subject(int index, String name) {
        this.index = index;
        this.name = name;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
    }

    public static void main(String[] args) {
        System.out.println(new Subject(1, "subject1").toString());
    }
}

运行结果如下:

由此可见reflectionToString这个函数默认打印所有变量,上面的示例使用的是默认的style,也就是ToStringStyle.DEFAULT_STYLE;

如果将style换成ToStringStyle.NO_FIELD_NAMES_STYLE,则打印结果如下:

可以看到并没有打印变量的名字,仅仅打印了变量的值;

如果换成ToStringStyle.MULTI_LINE_STYLE,则打印结果如下:

可以看到每个变量打印一行;

如果换成ToStringStyle.SHORT_PREFIX_STYLE,则打印结果如下:

可以看到类前面没有了包名;

如果换成ToStringStyle.SIMPLE_STYLE,则打印结果如下:

可以看到,这次直接没有了类名,直接只一次打印了变量的值。

结语

在自定义类的时候往往需要重写toString方法,ToStringBuilder工具类提供了很好支持,如果能够使用该类重写toString,那想必是极好的了。

时间: 2024-10-13 00:25:37

ToStringBuilder介绍的相关文章

ToStringBuilder学习(一):常用方法介绍

一.简介与引入    1.ToStringBuilder.HashCodeBuilder.EqualsBuilder.ToStringStyle.ReflectionToStringBuilder.CompareToBuilder等这些类都是位于commons-lang.jar下面的,所以要使用这些类一定要导入commons-lang.jar. 2.为什么要使用ToStringBuilder? 系统中一般都要打印日志的,因为所有实体的toString()方法 都用的是简单的"+",因为

ToStringBuilder 学习

一.简介与引入   1.ToStringBuilder.HashCodeBuilder.EqualsBuilder.ToStringStyle.ReflectionToStringBuilder.CompareToBuilder等这些类都是位于commons-lang.jar下面的,所以要使用这些类一定要导入commons-lang.jar.   2.为什么要使用ToStringBuilder?     系统中一般都要打印日志的,因为所有实体的toString()方法 都用的是简单的"+&quo

java-ToStringBuilder介绍

之前都是直接toString,今天看到了ToStringBuilder就想知道他的用处. 简单介绍: 1. 项目中一般都需要打印日志,所有实体的toString()方法都是用简单的"+",因为每"+" 一个就会 new 一个 String 对象,这样如果系统内存小的话会暴内存.使用ToStringBuilder就可以避免暴内存这种问题. ToStringBuilder的reflectionToString方法: logger.info("请求数据:&quo

Java语言Lang包下常用的工具类介绍_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现. 在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Webs

数据库介绍与分类

目录 数据库介绍与分类... 1 1.1 数据库介绍... 2 1.1.1什么是数据库... 2 1.2数据库的种类... 2 1.2.1关系型数据库介绍... 2 1.2.2非关系型数据库介绍... 3 1.3 常用关系型数据库产品介绍... 4 1.3.1 Oracle数据库... 4 1.3.2 MySQL数据库... 5 1.3.3 MariaDB数据库... 5 1.3.4 SqlServer数据库... 6 1.3.5 Access数据库... 6 1.3.6 其他不常用数据库...

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

苹果高管斯洛基介绍A11仿生芯片背后的秘密!

9月13日凌晨,苹果在秋季发布会上正式推出了全新一代iPhone智能手机:iPhone 8.iPhone 8 Plus和iPhone X(发音为iPhone 10).这三款新设备的都搭载了全新的移动芯片,苹果称之为A11仿生(不是"Fusion"),并表示这是iPhone上有史以来最强大.最智能的芯片. 通过发布会介绍的A11仿生芯片细节,不难发现苹果自主定制芯片野心非常大,可谓雄心勃勃.并且随着时间的推移,针对半导体芯片的定制设计越来越多,A11达到了前所未有的高度.苹果在发布会中的

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46