请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

lombok中的注解问题

看到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;

0 回复 有任何疑惑可以回复我~
  • 提问者 loubobooo #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-11-07 22:54:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信