2009-10-09 108 views
0

ReflectionToStringBuilder的規範用法如下如何擴展ReflectionToStringBuilder以避免重複?

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

是否有可能以某種方式不重複這一點,如果它有許多工作要做多次。我真的這麼認爲,但也許比我更先進的人可能會有一個建議。我真正想要做的是實際上添加一個方法。

回答

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

另一種方法,如果有用的話有被傳遞到您的代碼,其他參數是把匿名內部類中的方法:

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