@Data 注解引出的 lombok

官网:https://projectlombok.org/features/all

注解类型:

val : 和 scala 中 val 同名, 可以在运行时确定类型;

@NonNull : 注解在参数上, 如果该类参数为 null , 就会报出异常,  throw new NullPointException(参数名)

@Cleanup : 注释在引用变量前, 自动回收资源 默认调用 close() 方法

@Getter/@Setter : 注解在类上, 为类提供读写属性

@Getter(lazy=true) :

@ToString : 注解在类上, 为类提供 toString() 方法

@EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 注解在类上, 为类提供无参,有指定必须参数, 全参构造函数

@Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法

@Value :

@Builder : 注解在类上, 为类提供一个内部的 Builder

@SneakThrows :

@Synchronized : 注解在方法上, 为方法提供同步锁

@Log :

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

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

### Lombok库中@Data注解的功能和作用 Lombok 是一个 Java 库,旨在通过减少样板代码的编写来简化开发过程。`@Data` 注解Lombok 提供的一个非常常用的注解[^1]。以下是 `@Data` 注解的具体功能和作用: - **生成 Getter 和 Setter 方法**:当在一个类上使用 `@Data` 注解时,Lombok 会自动为类中的每个字段生成对应的 Getter 和 Setter 方法[^2]。 - **生成 `toString()` 方法**:`@Data` 注解还会为类生成一个 `toString()` 方法,该方法会包含类的所有字段,并以可读的格式输出[^1]。 - **生成 `equals()` 和 `hashCode()` 方法**:为了支持对象比较,`@Data` 注解会基于类的所有非静态字段自动生成 `equals()` 和 `hashCode()` 方法[^2]。 - **生成无参构造函数**:如果类中没有定义任何构造函数,`@Data` 注解会为类生成一个无参的公共构造函数[^1]。 需要注意的是,如果类中已经存在部分或全部上述方法Lombok 不会覆盖已有的实现[^2]。 以下是一个使用 `@Data` 注解的示例代码: ```java import lombok.Data; @Data public class User { private String name; private int age; } ``` 在这个例子中,`@Data` 注解为 `User` 类生成了以下内容: - `getName()` 和 `setName(String name)` 方法 - `getAge()` 和 `setAge(int age)` 方法 - `toString()` 方法,返回类似 `"User(name=value, age=value)"` 的字符串 - `equals(Object o)` 和 `hashCode()` 方法,基于 `name` 和 `age` 字段计算 ### 注意事项 尽管 `@Data` 注解非常方便,但在某些情况下可能需要谨慎使用。例如,在多线程环境中,`@Data` 自动生成的 Getter 和 Setter 方法可能会导致线程安全问题,因为它们默认是非线程安全的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值