Skip to content

Builder

java
Before:
  @Builder
  class Example<T> {
  	private T foo;
  	private final String bar;
  }

After:
  class Example<T> {
  	private T foo;
  	private final String bar;

  	// 私有的全参数构造函数
  	private Example(T foo, String bar) {
  		this.foo = foo;
  		this.bar = bar;
  	}

  	public static <T> ExampleBuilder<T> builder() {
  		return new ExampleBuilder<T>();
  	}

  	public static class ExampleBuilder<T> {
  		private T foo;
  		private String bar;

  		private ExampleBuilder() {}

  		public ExampleBuilder foo(T foo) {
  			this.foo = foo;
  			return this;
  		}

  		public ExampleBuilder bar(String bar) {
  			this.bar = bar;
  			return this;
  		}

  		@java.lang.Override public String toString() {
  			return "ExampleBuilder(foo = " + foo + ", bar = " + bar + ")";
  		}

  		public Example build() {
  			return new Example(foo, bar);
  		}
  	}
  }

lombok 问题

java
@Builder
public class ParentA {}

@Builder
public class ChildB extends ParentA {}