测试 ToStringBuilder.reflectionToString() 和 toString() 打印字段属性过滤方法

原创 2018年04月16日 19:49:08

测试 ToStringBuilder.reflectionToString() 和 toString() 打印字段属性过滤方法

1.实体类

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;

/**
 * Created by BF100 on 2018/4/16.
 */
@Setter
@Getter
@ToString(exclude = {"operatorIdNumber","id"})

public class ResDto implements Serializable{
    private static final long serialVersionUID = 543897254415045735L;
    private String operatorIdNumber;
    private String id;

    public String getOperatorIdNumber() {
        return operatorIdNumber;
    }

    public void setOperatorIdNumber(String operatorIdNumber) {
        this.operatorIdNumber = operatorIdNumber;
    }

}

2.ToStringBuilder.reflectionToString()和toString() 的打印结果展示

@Test
    public void test2(){
        ResDto res = new ResDto();
        res.setId("123");
        res.setOperatorIdNumber("420624197708249914");
        // 脱敏身份证号
        res.setOperatorIdNumber(DataDesensUtil.dealSensIdCardNo(res.getOperatorIdNumber()));
//        ReflectionToStringBuilder.toStringExclude(res, "operatorIdNumber");
        log.info("ToStringBuilder.reflectionToString :" + ToStringBuilder.reflectionToString(res));
        log.info("ToStringBuilderUtil.toString :" + ToStringBuilderUtil.toString(res));
        log.info("object.toString():" + res.toString());
    }


3.ToStringBuilder.reflectionToString()  通过重写 ReflectionToStringBuilder 子类 , 覆盖其 accept 方法来加以筛选,其中toString 会会跳过名为operatorIdNumber 和 id 属性


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

import java.lang.reflect.Field;

/**
 * Created by BF100 on 2018/4/16.
 */
public class ToStringBuilderUtil  {

    public static String toString(Object o) {

        return (new ReflectionToStringBuilder(o) {

            protected boolean accept(Field f) {
                return super.accept(f) && !f.getName().equals("operatorIdNumber") && !f.getName().equals("id");

            }}).toString();
    }
}
log.info("ToStringBuilderUtil.toString :" + ToStringBuilderUtil.toString(res));
就会打印出 res 的 属性 不包含 id 和 operatorIdNumber

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caox_nazi/article/details/79964073

java 打印对象的属性和值ToStringBuilder.reflectionToString

一、简介与引入    1、ToStringBuilder、HashCodeBuilder、EqualsBuilder、ToStringStyle、ReflectionToStringBuilder、C...
  • yuanquanl
  • yuanquanl
  • 2016-03-18 14:33:58
  • 4183

ToStringBuilder和ToStringStyle(覆盖每个实体的 toString 方法)

今天系统要打印日志,发现所有实体的toString()方法 都用的是简单的"+",因为每"+" 一个就会 new 一个 String 对象, 这样如果系统内存小的话会暴内存(前提系统实体比较多)。 ...
  • aya19880214
  • aya19880214
  • 2016-01-14 18:59:59
  • 1320

ToStringBuilder.reflectionToString 用法

ToStringBuilder.reflectionToString 用法 /** * 覆盖父类的toString() * @see java.lang.Object#toS...
  • zhq426
  • zhq426
  • 2012-11-14 14:59:30
  • 6119

Java 工具类 ToStringBuilder

System.out.println("-------------ToStringBuilder-------------------------");     User u = new Use...
  • wangjuntao_sky
  • wangjuntao_sky
  • 2016-03-15 15:13:35
  • 1642

使用ToStringBuilder重写toString方法

apache toString
  • tengdazhang770960436
  • tengdazhang770960436
  • 2017-02-19 13:35:59
  • 943

FastJson toString过滤指定的对象属性

最近在做一个需求时,遇到一个问题,在把Java对象用fastjson转成json字符串时,需要过滤掉Java对象中的指定属性,在网上找了一些资料,解决了该问题,具体可以通过本文中介绍的几种方式实现。本...
  • tterminator
  • tterminator
  • 2017-03-18 12:40:49
  • 4285

ReflectionToStringBuilder的使用分析与优化

前因:Object 类 手写toString 方法 太繁琐, 修改太麻烦 后果:利用 Apache Commons lang 自动化实现 toString 优势:①代码简洁 , 无须任何配...
  • yzw19932010
  • yzw19932010
  • 2015-01-14 16:52:30
  • 2079

java反射覆写toString方法实现输出实体类属性值

覆写java实体类toString的方法,使用反射技术输出全部属性的值(包括父类)。 前提条件:两个满足一个就行 1、实体类都继承同一个父类,在父类中覆写toString方法 2、在需要的实体类中覆写...
  • bq1073100909
  • bq1073100909
  • 2015-09-13 10:33:52
  • 3731

toString() ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE)

/**      * 覆盖父类的toString()      * @see java.lang.Object#toString()      */     public String toS...
  • hety119
  • hety119
  • 2016-02-26 17:26:30
  • 877
收藏助手
不良信息举报
您举报文章:测试 ToStringBuilder.reflectionToString() 和 toString() 打印字段属性过滤方法
举报原因:
原因补充:

(最多只允许输入30个字)