toString排除某个字段

场景

  • 使用ReflectionToStringBuilder完成toString
  • 例如密码的字段不参与toString

代码示例

package com.frank.string;

import java.lang.reflect.Field;

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

public class ExcludeField {
    
    private String userId;
    
    private String userName;
    
    private String passWord;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    
    public String toString()
    {
        //MULTI_LINE_STYLE 每一行一个字段
        //SHORT_PREFIX_STYLE 不换行,用逗号分隔
        ReflectionToStringBuilder builder = new ReflectionToStringBuilder(
                this, ToStringStyle.SHORT_PREFIX_STYLE) {
            @Override
            protected boolean accept(Field field) {
                return !field.getName().equals("passWord");
            }
        };

        return builder.toString();
    }
    
    public static void main(String[] args)
    {
        ExcludeField excludeField = new ExcludeField();
        excludeField.setUserId("00277499");
        excludeField.setUserName("Frank");
        excludeField.setPassWord("芝麻开门!");
        System.out.println(excludeField);
    }
}

你可能感兴趣的:(toString排除某个字段)