其他分享
首页 > 其他分享> > Lombok插件注解

Lombok插件注解

作者:互联网

在使用lombok注解的时候记得要导入lombok.jar包到工程,如果使用的是Maven的工程项目的话,要在其pom.xml中添加依赖如下:

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.16.8</version>

</dependency>

@AllArgsConstructor
会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验,
全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@NoArgsConstructor:无参构造函数

@RequiredArgsConstructor
会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法。

@Log :
@Log4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Slf4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象

@Data注解作用比较全,其包含注解的集合 @ToString, @EqualsAndHashCode,所有字段的 @Getter和所有非final字段的 @Setter, @RequiredArgsConstructor。其示例代码可以参考上面几个注解的组合
@Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法
@Builder : 注解在类上, 为类提供一个内部的 Builder
@Cleanup : 注释在引用变量前, 自动回收资源 默认调用 close() 方法
@NonNull注解能够为方法或构造函数的参数提供非空检查
@NonNull : 注解在参数上, 如果该类参数为 null , 就会报出异常, throw new NullPointException(参数名)

public void notNullExample(@NonNull String string) {

string.length();

}

//=>相当于

public void notNullExample(String string) {

if (string != null) {

string.length();

} else {

throw new NullPointerException("null");

}

}

@Cleanup注解能够自动释放资源
在这里插入图片描述
@Getter/@Setter注解可以针对类的属性字段自动生成Get/Set方法
在这里插入图片描述
@ToString注解,为使用该注解的类生成一个toString方法,默认的toString格式为:ClassName(fieldName= fieleValue ,fieldName1=fieleValue)

@ToString(callSuper=true,exclude="someExcludedField")

public class Demo extends Bar {

private boolean someBoolean = true;

private String someStringField;

private float someExcludedField;

}

//上面代码相当于如下:

public class Demo extends Bar {

private boolean someBoolean = true;

private String someStringField;

private float someExcludedField;

@ Override

public String toString() {

return "Foo(super=" + super.toString() +

", someBoolean=" + someBoolean +

", someStringField=" + someStringField + ")";

}

}

@EqualsAndHashCode注解,为使用该注解的类自动生成equals和hashCode方法。
在这里插入图片描述
@Synchronized注解类似Java中的Synchronized 关键字,但是可以隐藏同步锁

public class SynchronizedExample {

private final Object readLock = new Object();

@Synchronized

public static void hello() {

System.out.println("world");

}

@Synchronized("readLock")

public void foo() {

System.out.println("bar");

}

//上面代码相当于如下:

public class SynchronizedExample {

private static final Object $LOCK = new Object[0];

private final Object readLock = new Object();

public static void hello() {

synchronized($LOCK) {

System.out.println("world");

}

}

public void foo() {

synchronized(readLock) {

System.out.println("bar");

}

}

}

标签:插件,void,Object,private,为类,注解,Lombok,public
来源: https://blog.csdn.net/qq_42981242/article/details/110367119