Lombok 基础

Lombok 基本注解

Lombok 高级注解

Lombok FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/lombok-annotation-noargsconstructor-allargsconstructor.html

Lombok @NoArgsConstructor 和 @AllArgsConstructor 注解深入理解


@NoArgsConstructor@AllArgsConstructor 是 Lombok 库中的两个常用注解,它们用于自动生成无参构造函数和全参构造函数。

Lombok 使用 Java 的注解处理器来生成代码。当你在类上使用 @NoArgsConstructor@AllArgsConstructor 注解时,Lombok 会在编译时期自动生成相应的构造函数代码。这样,你就不需要手动编写这些构造函数,可以节省大量的时间和代码。

@NoArgsConstructor 注解

@NoArgsConstructor 是 Lombok 库中的一个注解,用于自动生成一个无参构造函数。

源码如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface NoArgsConstructor {

	String staticName() default "";

	AnyAnnotation[] onConstructor() default {};

	AccessLevel access() default lombok.AccessLevel.PUBLIC;

	boolean force() default false;

	@Deprecated
	@Retention(RetentionPolicy.SOURCE)
	@Target({})
	@interface AnyAnnotation {}
}

作用

它的主要作用是简化 Java 类的编写,减少手动编写无参构造函数的工作量,特别是对于那些具有大量字段的类。

注解属性

@NoArgsConstructor 虽然它本身没有太多属性,但有一些属性可以用来定制生成的无参构造函数的行为。

下面是 @NoArgsConstructor 注解的属性:

  1. staticName :默认为 "",表示不生成静态工厂方法。如果设置为非空字符串,Lombok 将生成一个静态工厂方法,方法名称与指定的字符串相同,用于创建类的实例。
  2. onConstructor :默认为空字符串。允许你为生成的构造函数添加注释。这个属性可以用来提供有关构造函数用途的额外信息。
  3. access :指定生成的无参构造函数的访问修饰符。默认值是 public。你可以使用 AccessLevel 枚举来设置访问级别,例如 AccessLevel.PRIVATEAccessLevel.PROTECTED 等。
  4. force :默认为 false。如果设置为 true,则 Lombok 会尝试生成无参构造函数,即使类已经有了其他构造函数(有参构造函数)。这在某些情况下可能会有用。

这些属性可以根据你的需求来配置 @NoArgsConstructor 注解,以便生成符合你要求的无参构造函数。需要注意的是,通常情况下,你不需要显式地设置这些属性,因为 @NoArgsConstructor 的默认值通常就足够了。但是,在一些特殊情况下,这些属性可以提供额外的定制和控制。

用法

只需在类的定义上使用 @NoArgsConstructor 注解即可,如下所示:

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class MyClass {
    // 类的字段和方法
}

@AllArgsConstructor 注解

@AllArgsConstructor 是 Lombok 库中的一个注解,用于自动生成一个包含所有字段的全参构造函数。

源码如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface AllArgsConstructor {

	String staticName() default "";

	AnyAnnotation[] onConstructor() default {};

	AccessLevel access() default lombok.AccessLevel.PUBLIC;

	@Deprecated
	@Retention(RetentionPolicy.SOURCE)
	@Target({})
	@interface AnyAnnotation {}
}

作用

它的主要作用是简化 Java 类的编写,减少手动编写全参构造函数的工作量,特别是对于那些具有大量字段的类。

注解属性

@AllArgsConstructor 虽然它本身没有太多属性,但有一些属性可以用来定制生成的无参构造函数的行为。

下面是 @AllArgsConstructor 注解的属性:

  1. staticName :默认为 "",表示不生成静态工厂方法。如果设置为非空字符串,Lombok 将生成一个静态工厂方法,方法名称与指定的字符串相同,用于创建类的实例。
  2. onConstructor :默认为空字符串。允许你为生成的构造函数添加注释。这个属性可以用来提供有关构造函数用途的额外信息。
  3. access :指定生成的无参构造函数的访问修饰符。默认值是 public。你可以使用 AccessLevel 枚举来设置访问级别,例如 AccessLevel.PRIVATEAccessLevel.PROTECTED 等。

这些属性可以根据你的需求来配置 @AllArgsConstructor 注解,以便生成符合你要求的全参构造函数。通常情况下,你可以使用注解的默认值,但在某些情况下,特别是需要额外的控制或自定义构造函数时,这些属性可以提供非常有用的选项。

用法

只需在类的定义上使用 @AllArgsConstructor 注解即可,如下所示:

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class MyClass {
    private String field1;
    private int field2;
    // 其他字段和方法
}

你还可以使用 access 属性来指定构造函数的访问修饰符,例如:

import lombok.AllArgsConstructor;

@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class MyClass {
    private String field1;
    private int field2;
    // 其他字段和方法
}

总结

总之,@NoArgsConstructor@AllArgsConstructor 注解是 Lombok 库中用于自动生成无参构造函数和全参构造函数的两个常用注解。它们的使用可以大大简化 Java 类的编写,减少冗长的构造函数代码,提高代码的可读性和可维护性。在使用时,只需在类的定义上添加相应的注解,Lombok 会自动为你生成构造函数代码。

Lombok插件有三种生成不同构造器的注解,它们分别是@NoArgsConstructor、@RequiredArgsConstructor ...
@Getter和@Setter是两个常用的Lombok注解,它们用于自动生成Java类中属性字段的getter和setter方法。SOURC ...
@ToString注解是Lombok库提供的一种注解,用于自动生成一个类的toString()方法。@ToString注解@ToString ...
@Data注解是Lombok中的一个重要注解之一,它用于自动生成类的标准数据方法。总结总之,@Data注解是Lombok库中用于自动生成常用 ...
@Value注解是Lombok中的一个注解,它用于生成一个不可变(immutable)的Java类,该类包含了一些常用的方法,如构造函数、e ...