`
朱秋旭
  • 浏览: 230674 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lombok 之 Constructor

阅读更多

LomBok 的相关目录已经整理出来,希望大家可以根据需求自助学习,好工具要大家分享:

@Cleanup     

@Getter, @Setter

@ToString

@EqualsAndHashCode

@Constructor

@Data & @Value

@SneakyThrows

@Synchronized

@Getter(lazy=true)

 

@Log

 

在Lombok中,生成构造方法的annotation一共有三个,@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsContructor。使用这三个annotation来完成项目中对于不同构造方法的需求。

 

@NoArgsConstructor : 生成一个无参数的构造方法,这个annotation在与其他的annotation配合起来使用的时候更加能凸显出他的重要性,例如在使用hibernate这种框架的时候,如果有一个有参数的构造方法的时候,NoArgsConstructor会展示出他的作用。

 

@RequiredArgsConstructor: 会生成一个包含常量,和标识了NotNull的变量 的构造方法。生成的构造方法是private,如何想要对外提供使用可以使用staticName选项生成一个static方法。

 

@AllArgsContructor:  会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验, 我们来看一下官方给出的一个例子:

 

 

import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.NonNull;

@RequiredArgsConstructor(staticName = "of")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public class ConstructorExample<T> {
  private int x, y;
  @NonNull private T description;
  
  @NoArgsConstructor
  public static class NoArgsExample {
    @NonNull private String field;
  }
}

 

 

上面的例子用Java代码翻译一下就是:

 

 

public class ConstructorExample<T> {
  private int x, y;
  @NonNull private T description;
  
  private ConstructorExample(T description) {
    if (description == null) throw new NullPointerException("description");
    this.description = description;
  }
  
  public static <T> ConstructorExample<T> of(T description) {
    return new ConstructorExample<T>(description);
  }
  
  @java.beans.ConstructorProperties({"x", "y", "description"})
  protected ConstructorExample(int x, int y, T description) {
    if (description == null) throw new NullPointerException("description");
    this.x = x;
    this.y = y;
    this.description = description;
  }
  
  public static class NoArgsExample {
    @NonNull private String field;
    
    public NoArgsExample() {
    }
  }
}

 如果是@AllArgsConstructor 在生成的构造函数上会生成一@ConstructorProperties 的Java annotation, 当然也可以通过将suppressConstructorProperties 设置为true来禁用@ConstructorProperties 。 如果你知道@ConstructorProperties 是干什么用的,那么一定就知道@NoArgsConstructor为什么没有这个配置参数了。

 

提示一点:@ConstructorProperties 只能用在JDK 6 中

分享到:
评论

相关推荐

    lombok1.16.20

    改变:lombok配置键lombok.anyConstructor.suppressConstructorProperties现在已被弃用,默认为true,也就是说,默认情况下lombok不再自动生成@ConstructorProperties注释。新的配置键lombok.anyConstructor....

    lombok idea用插件

    lombok是在编译阶段才生成相应的代码体,所以在项目中直接调用setter,getter,constructor会报错,这时候可以在IDE安装相应的插件支持lombok。这里介绍idea插件安装,eclipse请自行百度。

    详解Lombok快速上手(安装、使用与注解参数)

    @Data(staticConstructor = "of") public class Exercise&lt;T&gt; { private final String name; private final T value; } ``` 使用 `@Data` 注解可以自动生成 getter、setter、toString、equals 和 hashCode 等方法...

    ext+js深入浅出

    表格(Grid)是**EXTJS**中最常用也是最强大的组件之一,广泛应用于数据展示和管理。 ##### 3.1 Grid的特性简介 Grid组件提供了丰富的功能,如数据排序、分页、筛选等,支持多种数据源,可以方便地与服务器进行...

    让你的软件飞起来——嵌入式编程的算法研究

    《让你的软件飞起来》是一本专注于嵌入式编程中算法应用的教程,旨在帮助开发者提升软件性能,实现更高效、更轻盈的系统运行。嵌入式编程是计算机科学的一个重要分支,它涉及到硬件与软件的紧密结合,常用于物联网...

    详解SpringBoot优雅编码之Lombok加持

    详解SpringBoot优雅编码之Lombok加持 Lombok是一款功能强大且广泛使用的Java库,旨在简化Java开发过程,提高代码质量和开发效率。下面我们将详细介绍Lombok的使用方法和优雅编码技巧。 Lombok的优点: 1. 简化...

    idea-plugins.zip二十多个插件集合包

    ❼Lombok:自动生成setter/getter/constructor/builder等 ❽MyBatis Log Plugin:格式化mybatis的输出脚本 ❾Gsonformat:根据json快速生成java实体类 10、IdeaJad: 反编译插件 三、查找系列 ❶Free Mybatis ...

    lombok-examples:Using使用Lombok的实践示例:https:projectlombok.org

    测试Lombok基本功能的最简单的Maven项目 这是我练习lombok的单个Java项目。 您将在App.java文件中...6. @RequiredArgsConstructor, generates a constructor for all final fields, with parameter order same as field

    lomok.docx

    同时,Lombok 还提供了一个强大的特性——`@CopyConstructor` 注解,可以用来自动创建一个拷贝构造函数,该构造函数接受一个源对象并使用其所有字段的值初始化新对象的对应字段。这样,就不需要使用 BeanUtils 或 ...

    IntellijIDEA中MybatisMapper自动注入警告的6种解决方案.docx

    原因有两个:一是 Spring 官方并不建议直接在类的 field 上使用 @Autowired 注解,二是体现了 Lombok 的优势,简化了代码。 方案 5:把 IDEA 的警告关闭掉 个人没试过,也没有动力去试。没有提示的 IDEA 是没有...

    动态生成、编译、运行java文件

    `Class.forName()`用于加载类,`Class.newInstance()`创建类的实例,`Method`和`Constructor`类则用于访问和调用类的方法和构造器。 在实际应用中,动态生成、编译和运行Java代码的示例包括: 1. **元编程**:例如...

    java整合SSM框架

    &lt;constructor-arg index="0" ref="sqlSessionFactory"/&gt; &lt;!-- 开启事务管理 --&gt; &lt;!-- 配置事务管理器 --&gt; &lt;!-- 扫描指定包下的Service组件 --&gt; &lt;!-- 配置mapper接口扫描 --&gt; ``` ###...

    面试评估

    - 注解处理器:了解Apt和JSR 269,以及现代注解处理器如Lombok。 以上是Java面试中常见的技术要点,面试评估时通常会结合实际问题和项目经验进行深度探讨,以全面评估候选人的专业能力和适应性。

    springCloud.docx

    Lombok 是一个 Java 库,旨在减少 Java 代码中的样板代码,通过注解的方式自动生成 getter、setter、equals、hashCode 等方法。 #### 依赖管理 Spring Cloud 项目通常会依赖许多外部库,这些依赖通过 Maven 或 ...

    JAVA 面试题总览(书签完整版)

    - 使用`@Data`注解或Lombok库自动生成这些方法。 - 优点:简化代码,减少出错概率。 - 缺点:依赖第三方库,可能影响性能。 #### 20. 访问修饰符的应用设计作用 - **public**:公开,对所有类可见。 - **private**...

Global site tag (gtag.js) - Google Analytics