zoukankan      html  css  js  c++  java
  • @Builder

    @Builder

    User.builder().name(UUID.randomUUID().toString()).build()

    不使用 lombok 的方案

    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);
    }
    }
    }

    使用 lombok 的方案 guava 16.0.1

    @Builder

    public class Example

    {

    private int foo;

    private final String bar;

    }

    构造一个实例,属性不需要单独set 
    Example.builder().foo(1).bar(“test”).build()

    @Builder
    @Getter
    public class HttpProxyContext
    @Bean
    public HttpProxyContext httpActivityProxyContext() {
    return HttpProxyContext.builder()
    .baseUrl(environment.getProperty("activity.template.host"))
    .cdlTemplateDetailUrl("v1/cdl/template/detail")
    .userQuestionAireDetailUrl("v1/right/getUserQuestionnaireSurveyByProfileNo")
    .mktAppElasticLayerUrl("v1/layer/getMktAppElasticLayer")
    .appLayerUrl("v1/layer/getAppLayerConfig")
    .monitorUrl("v1/layer/saveMonitor")
    .objectMapper(objectMapper())
    .build();
    }

    @Builder(toBuilder = true)
    @Getter
    public class UserInfo {
      private String name;
      private String email;
      @MinMoney(message = "金额不能小于0.")
      @MaxMoney(value = 10, message = "金额不能大于10.")
      private Money price;
    
    }

    @Builder注解赋值新对象
    UserInfo userInfo = UserInfo.builder()
            .name("zzl")
            .email("bgood@sina.com")
            .build();

    @Builder注解修改原对象的属性值

    修改实体,要求实体上添加@Builder(toBuilder=true)

     userInfo = userInfo.toBuilder()
            .name("OK")
            .email("zgood@sina.com")
            .build();

    https://blog.csdn.net/mccand1234/article/details/53456411

  • 相关阅读:
    dom4j操作xml
    iOS 导航栏的那些事儿
    iOS--定时器(几种定时器的对比)
    iOS--优秀博客记录
    iOS--基础--文件操作
    iOS--动画--GitHub前50名的Objective-C动画相关库
    iOS--资料--类目Category收集
    iOS--资料--开源收集
    iOS--资料--开源项目及库
    ios--控件--自定义封装一个控件
  • 原文地址:https://www.cnblogs.com/ywsheng/p/11264207.html
Copyright © 2011-2022 走看看