代码之家  ›  专栏  ›  技术社区  ›  non sequitor

如何将ReflectionToStringBuilder扩展到避免重复?

  •  0
  • non sequitor  · 技术社区  · 15 年前

    的规范用法 ReflectionToStringBuilder 如下所示

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

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

    2 回复  |  直到 8 年前
        1
  •  4
  •   Jonathan Feinberg    15 年前
    class NonPasswordShowingStringBuilder extends ReflectionToStringBuilder
    {
        protected boolean accept(Field f) {
             return super.accept(f) && !f.getName().equals("password");
        }
    
        public NonPasswordShowingStringBuilder(Object o) { super(o); }
    }
    

    除非我错过了什么。

        2
  •  1
  •   Tom Hawtin - tackline    15 年前

    另一种方法(如果还有其他参数要传递给代码,则很有用)是将匿名内部类放入方法中:

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