lombok中的注解问题
来源:7-6 部门列表树型结构界面开发

loubobooo
2017-11-07
看到model层中任一的类都有@Builder,就去看了了解了下builder这种建造者模式,但是该注解@Builder好像跟这种模式并没有太大关系,这是第一个问题。
然后@Builder是否为灵活地解决不必要的参数设置,通俗讲就是使传参更灵活。这是第二个问题
希望老师能够解惑。
1回答
-
你好,关于@Builder注解,不写注解的时候:
public 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);
}
}
}
写这个注解的时候:
@Builder
public class Example {
private int foo;
private final String bar;
}
构造一个实例,属性不需要单独set, 只需要如下即可
Example.builder().foo(1).bar(“test”).build();
其实就是按照builder模式来实现的。
使用这个注解对设置值时也是特别的灵活,允许根据需要填入需要设置的参数,非常的灵活。这里有个需要注意的问题是有些值没设置的是空值。(课程里sql会对字段做空判断后执行插入或更新)
如果个别值希望使用默认值,可以这样来用:
@Builder.Default
private int type = 2;
012017-11-07
相似问题
回答 1
回答 1