Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何扩展StringBuilder以避免重复?_Java - Fatal编程技术网

Java 如何扩展StringBuilder以避免重复?

Java 如何扩展StringBuilder以避免重复?,java,Java,的规范用法如下所示 public String toString() { return (new ReflectionToStringBuilder(this) { protected boolean accept(Field f) { return super.accept(f) && !f.getName().equals("password"); } }).toString(); } 如果

的规范用法如下所示

public String toString() {
     return (new ReflectionToStringBuilder(this) {
         protected boolean accept(Field f) {
             return super.accept(f) && !f.getName().equals("password");
         }
     }).toString();
 }
如果必须重复多次,是否有可能不重复这一点。我真的这么认为,但也许比我更先进的人会有一个建议。我真正想做的是添加一个方法

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

    public NonPasswordShowingStringBuilder(Object o) { super(o); }
}
除非我遗漏了什么


除非我遗漏了什么。

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

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

如果要向代码传递其他参数,另一种方法很有用,即将匿名内部类放入方法中:

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