如何扩展ReflectionToStringBuilder以避免重复?

时间:2009-10-09 15:49:37

标签: java

ReflectionToStringBuilder的规范用法如下

public String toString() {
     return (new ReflectionToStringBuilder(this) {
         protected boolean accept(Field f) {
             return super.accept(f) && !f.getName().equals("password");
         }
     }).toString();
 }

如果必须多次完成,是否有可能不重复此操作。我真的这么认为,但也许比我更先进的人可能会有一个建议。我真正想要做的是实际添加一个方法。

2 个答案:

答案 0 :(得分:4)

class NonPasswordShowingStringBuilder extends ReflectionToStringBuilder
{
    protected boolean accept(Field f) {
         return super.accept(f) && !f.getName().equals("password");
    }

    public NonPasswordShowingStringBuilder(Object o) { super(o); }
}

除非我遗漏了什么。

答案 1 :(得分:1)

另一种方法,如果要将其他参数传递给您的代码,则非常有用,就是将匿名内部类放在方法中:

public static ReflectionToStringBuilder toStringBuilder(Object obj) {
    return new ReflectionToStringBuilder(obj) {
        @Override protected boolean accept(Field f) {
            return super.accept(f) && !f.getName().equals("password");
        }
    };
}