首页 > 其他分享 >lombok注解:@Builder

lombok注解:@Builder

时间:2023-09-27 10:38:25浏览次数:47  
标签:String person Builder private Person 注解 lombok name

带有注释的方法@Builder(从现在起称为target)会导致生成以下 7 个内容:

  • 名为 的内部静态类FooBuilder,具有与静态方法相同的类型参数(称为builder)。
  • 构建器中:目标的每个参数都有一个私有非静态非最终字段。
  • 构建器中:包私有无参数空构造函数。
  • 构建器中:目标的每个参数都有一个类似“setter”的方法:它与该参数具有相同的类型和相同的名称。它返回构建器本身,以便可以链接设置器调用,如上面的示例所示。
  • 构建器中:build()调用方法的方法,传入每个字段。它返回的类型与目标返回的类型相同。
  • 构建器中:一个合理的toString()实现。
  • 在包含目标 的类中: 一个方法,用于创建构建器builder()的新实例。

 以作用于方法体上,也可以作用于类上,作用于类上时生成一个私有构造函数,其中所有字段作为参数,方便我们快速构造对象

传统赋值方法:

Person person = new Person();
person.setName("Adam Savage");
person.setCity("San Francisco");
person.setJob("Mythbusters");

使用@Builder之后:

Person person =  Person.builder()
.name("Adam Savage")
.city("San Francisco")
.job("Mythbusters")
.build();

@Builder.default

在传统对象中,我们直接对参数赋值可以初始化参数,但是使用@Builder后,初始化参数是无效的,所以需要使用@Builder.Default注明这是一个默认构造参数

@Data
@Builder
public class Person{
    private String name = "aaa";
    
    @Builder.Default
    private String city = "bbb";
     
    private String job;   
}    
public static void main(String[] args){
    Person person = Person.builder().build();
    System.out.println(person.toString());
}

结果为:

Person(name=null, city="bbb", job=null)

@Singular

@Data
@Builder
public class Person{
    private String name = "aaa";
    
    @Builder.Default
    private String city = "bbb";
     
    private String job;   
    
    @Singular
    private List<String> intrests;
    
}  
public static void main(String[] args){
    Person person = Person.builder().name("aaa").intrest("1111").intrest("2222").build();
    System.out.println(person.toString());
}

结果为:

Person(name="aaa", city="bbb", job=null,intrests=["1111","2222"])

@Singular可以识别简单的复数单词,对于以以“s”结尾的单词,要删除最后一个字母;对于某些以“es”结尾的单词,要删除最后两个字母,对于不能识别的会报错

@Data
@Builder
public class Person{
    private String name = "aaa";
    
    @Builder.Default
    private String city = "bbb";
     
    private String job;   
    
    @Singular
    private List<String> intrests;

    @Singular("tag")
    private List<String> tagList;
    
} 
public static void main(String[] args){
    Person person = Person.builder().name("aaa").intrest("1111").intrest("2222").tag("tag1").tag("tag2").build();
    System.out.println(person.toString());
}

结果为:

Person(name="aaa", city="bbb", job=null,intrests=["1111","2222"],tag=["tag1","tag2"])

标签:String,person,Builder,private,Person,注解,lombok,name
From: https://www.cnblogs.com/syq816/p/17731921.html

相关文章

  • OpenHarmony自定义构建函数:@Builder装饰器
     前面章节介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定,仅与使用方进行数据传递。ArkUI还提供了一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。为了简化语言,我......
  • 关于测试类注解对应的依赖
    对于测试类使用的@SpringBootTest@RunWith(SpringRunner.class)publicclassDaoTest{@AutowiredprivateUserDaouserDao;@Testpublicvoidtest1(){Useruser=newUser();user.setId(1l);user.setItemId(1L);user.setOpen......
  • Lombok简介、使用、工作原理、优缺点
    1.Lombok简介Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。简而言之:Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。2.Lombok使用使用Lombok需要的开发环境Java+M......
  • SpringIOC的注解使用
    1,实体类Student.javapackagecom.mashibing.bean;publicclassStudent{privateIntegerage;privateStringname;publicStudent(){System.out.println("student");}publicStudent(Integerage,Stringname){this.age=......
  • 【Java 基础篇】StringBuilder的魔力:Java字符串处理探究
    在Java编程中,字符串是一个常见的数据类型,用于存储文本信息。然而,与字符串相关的操作可能会导致性能问题,因为字符串是不可变的,每次对字符串进行操作都会创建一个新的字符串对象。为了解决这个问题,Java提供了StringBuilder类,它允许我们有效地处理可变字符串。在本篇博客中,我们将详细......
  • 解决lombok编译报错
    解决lombok编译报错idea编译报错java:JPSincrementalannotationprocessingisdisabled.Compilationresultsonpartialrecompilationmaybeinaccurate.Usebuildprocess“jps.track.ap.dependencies”VMflagtoenable/disableincrementalannotationprocessing......
  • 同一个类调方法导致注解式事务失效的问题
    说明在项目启动时,如果有@Transactional注解,spring是生成代理类来开启事务、提交事务和回滚事务的,但是如果是同一个类之间调用,就是直接调方法,导致事务失效。我们可以用一下方式在同一类获取当前类的代理对象,从而避免事务失效的问题。但是这种方式会有问题,下面有说明。推荐调用拆到......
  • HbuilderX将Vue项目打包后的dist,打包成安卓apk安装包
    1、先看这个(必看):https://www.cnblogs.com/lyt520/p/16545806.html2、安装移动端log(如不需要可跳过此步骤)npminstallvconsolemain.js中引入:importVConsolefrom'vconsole'constvConsole=newVConsole()Vue.use(vConsole)3、HBuilderX和逍遥模拟器(用模拟器实现真......
  • Java 21的StringBuilder和StringBuffer新增了一个repeat方法
    发现Java21的StringBuilder和StringBuffer中多了repeat方法:/***@throwsIllegalArgumentException{@inheritDoc}**@since21*/@OverridepublicStringBuilderrepeat(intcodePoint,intcount){super.repeat(codePoint,co......
  • Spring 02 Spring注解开发
     dao层publicinterfaceUserDao{voidinsertUser();}实现类/*@Component(value="userDao")配置到实例里去或者直接用下面的Repository*/@Repository("userDao")publicclassUserDaoImplimplementsUserDao{@OverridepublicvoidinsertUser(......