java Lombok总结

时间:2025-08-26 16:48:01来源:互联网

下面小编就为大家分享一篇java Lombok总结,具有很好的参考价值,希望对大家有所帮助。

注解说明

@Data

标注在实体类上,不用写set和get方法,但其他地方可以直接调用set和get方法

@Data
@ApiModel("ParkIdsAO")
public class ParkIdsAO {
    @ApiModelProperty(value = "车场id集合", name = "parkIds", required = true)
    @NotNull
    @Size(min = 1)
    private List<String> parkIds;
}

@NoArgsConstructor

注解在类上,为类提供一个无参的构造方法。

@AllArgsConstructor

(1)注解在类上,为类提供一个全参的构造方法。

(2)默认生成的方法是 public 的,如果要修改方法修饰符可以设置 AccessLevel 的值。

如:@AllArgsConstructor(access = AccessLevel.PROTECTED)

@Builder

@Builder声明实体,表示可以进行Builder方式初始化

实例:

@Builder(toBuilder = true)
@Getter
public class UserInfo {
  private String name;
  private String email;
  @MinMoney(message = "金额不能小于0.")
  @MaxMoney(value = 10, message = "金额不能大于10.")
  private Money price;
}
//赋值新对象
UserInfo userInfo = UserInfo.builder()
        .name("zzl")
        .email("[email protected]")
        .build();
//修改对象
userInfo = userInfo.toBuilder()
        .name("OK")
        .email("[email protected]")
        .build();

 

@RequiredArgsConstructor

生成带有必须参数的构造函数

原来的spring的传统方式

使用lombok的这个注解可以不用写注入需要的注解

 

说明:

声明的变量必须为final

 

@RequiredArgsConstructor(onConstructor=@_(@Autowired)):

为private final定义的变量进行自动注入,可省略写大量@Autowired

val

Lombok的val特性允许你在Java局部变量声明时省略具体的类型声明,从而使代码更加简洁

Lombok会自动推断出变量的类型,并且这个变量会被隐式地声明为final,即不可变。这意味着一旦赋值,你就不能再次改变这个变量的值。

举例

List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
//修改为使用val
val names = new ArrayList<String>();
names.add("Alice"); // 这里实际上会有错误,因为val声明的变量应为不可变,但Java集合默认不是final,此处仅为示例说明

注意事项
非静态和非实例字段:val不适用于类的字段(成员变量),只能用于局部变量。

类型推断限制:尽管val简化了类型声明,但在复杂的表达式中,过度依赖类型推断可能会降低代码的可读性。

Lombok的工作原理是在编译时期通过注解处理器自动生成必要的代码片段,包括类型信息、final修饰符等。

不会造成运行时的效率下降

本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!