Lombok常用注解小结

Lombok核心特征是你需要用注解来创建代码,目的是减少你要写的样板代码的数量。它为你提供如下,注解,这可能会永远改变代码(不是你的生活):

@Getter 和 @Setter: 为你的字段创建getter和setter

@EqualsAndHashCode: 实现equals()和hashCode()

@ToString: 实现toString()

@Data: 使用上面四个注解的特征

@Cleanup: 关闭流

@Synchronized: 对象上同步

@SneakyThrows: 抛出异常

### Lombok 常用注解及使用方法 #### 添加依赖 为了在项目中使用 Lombok,需引入相应的 Maven 或 Gradle 依赖。对于 Maven 用户,在 `pom.xml` 文件内添加如下配置: ```xml <dependencies> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> </dependencies> ``` 此操作确保开发环境能够识别并编译带有 Lombok 注解Java 类[^3]。 #### @Getter / @Setter 这两个注解用于自动生成属性访问器(getter)和修改器(setter)。通过简单声明即可减少样板代码量,提高编码效率。值得注意的是,针对布尔类型的字段,当其为原始类型 (`boolean`) 时会生成以 "is" 开头的方法;而如果是包装类型 (`Boolean`) 则遵循常规命名规则生成 getter 方法[^5]。 例如: ```java import lombok.Getter; import lombok.Setter; @Getter @Setter public class User { private String name; private int age; } ``` 上述定义将自动创建对应于 `name` 和 `age` 属性的标准 getter/setter 对[^4]。 #### @SneakyThrows 该注解允许开发者绕过显式的 try-catch 结构来处理受检异常。它会在内部捕获任何被标记的方法可能抛出的具体异常,并利用反射机制重新抛出这些异常而不改变原有签名。这有助于简化错误处理逻辑的同时保持 API 清晰度[^1]。 示例代码片段展示了如何应用这一特性: ```java import lombok.SneakyThrows; public class ExampleService { @SneakyThrows(InterruptedException.class) public void performOperation() throws InterruptedException { Thread.sleep(1000); } } ``` 这里即使发生中断异常也不会影响到外部调用者感知不到具体的实现细节。 #### @NonNull 应用于方法参数或成员变量上,指示它们不应为空值。如果违反了这个约束条件,则会在运行期间触发 NullPointerException 并附带具体位置信息以便调试定位问题所在[^2]。 考虑下面的例子: ```java import lombok.NonNull; public class ServiceExample { public static void main(String[] args) { new ServiceExample().processInput(null); // 将抛出 NPE 错误提示输入不能为空 } public void processInput(@NonNull final Object input) { System.out.println(input.toString()); } } ``` 一旦传入 null 参数给标注有 @NonNull 的形参,程序即刻终止执行并向控制台打印堆栈跟踪记录指出哪里出了错。 #### @ToString 此注解用来便捷地覆盖 toString 方法,默认情况下会对所有非静态字段进行拼接输出字符串表示形式。还可以定制排除某些特定项或是调整整体样式等选项。 样例展示了一个简单的 POJO 使用场景: ```java import lombok.ToString; @ToString(exclude = {"password"}) class Account { private long id; private String username; private transient char[] password; // 不参与序列化过程也不显示出来 } ``` 这样做的好处是可以灵活控制对象转成文本后的外观效果,同时也保护敏感数据不泄露出去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值