告别重复劳动,用Lombok解放你的双手------原来高效编码的秘密武器就藏在这几个注解里!
刚开始学java的同仁们肯定在培训班写过无数个getter
、setter
、toString
的。但是这也是不可避免的,肯定得从基础的学起来,等到完全熟悉了以后,这边给初学的各位推荐一个Lombok"神器"------代码量肉眼可见地少了一半!今天就分享5个搬砖效率的Lombok技巧,,看完你绝对会内心非常高兴并且拍大腿大喊:"早该用它了!"
技巧1:@Builder ------ 告别构造器
场景:每次new一个复杂对象,都要写一长串构造参数,顺序错了还容易崩!
Lombok解法 :一个@Builder
注解,直接开启流式构造(Builder模式)!
java
import lombok.Builder;
@Builder
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
// 实际使用:链式调用,清晰又防错!
public class Main {
public static void main(String[] args) {
User user = User.builder()
.id(1L)
.name("张三")
.age(25)
.email("zhangsan@example.com")
.build(); // 最终构造
System.out.println(user);
// 输出: User(id=1, name=张三, age=25, email=zhangsan@example.com)
}
}
效果:再也不用记参数顺序,避免手抖写错字段,代码可读性直线上升!
技巧2:@Slf4j ------ 日志注入,一行搞定
场景 :每个类开头都要写private static final Logger log = LoggerFactory.getLogger(...);
,烦不烦?
Lombok解法 :类上加@Slf4j
,直接使用log
对象打日志!
java
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class OrderService {
public void createOrder() {
log.info("订单创建开始...");
try {
// 业务代码...
log.debug("订单参数校验通过");
} catch (Exception e) {
log.error("创建订单失败!", e);
}
}
}
// 无需再写:private static final Logger log = ...
效果:省掉重复声明,专注写业务日志,效率++!
技巧3:@SneakyThrows ------ 偷偷抛出异常,不用你声明
场景 :写个简单IO操作,非要加throws IOException
,或者用try-catch包成粽子!
Lombok解法 :@SneakyThrows
帮你"偷偷"抛出受检异常,代码瞬间清爽。
java
import lombok.SneakyThrows;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileReader {
@SneakyThrows // 重点!自动处理IOException
public String readFile(String path) {
byte[] bytes = Files.readAllBytes(Paths.get(path));
return new String(bytes);
}
}
// 调用时:无需处理异常,Lombok在编译期帮你加了try-catch!
效果:简化异常处理,尤其适合写工具类、测试代码,但生产环境慎用复杂逻辑!
技巧4:val ------ 局部变量类型推断,写Java像写Kotlin
场景 :明明右边知道类型,左边还要啰嗦写一遍Map<String, List<Integer>> map = ...
Lombok解法 :用val
声明局部变量,自动推断类型!(类似JS的const)
java
import lombok.val;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ValExample {
public static void main(String[] args) {
val name = "李四"; // 自动推断为String
val list = new ArrayList<String>(); // 推断为ArrayList<String>
list.add("Java");
list.add("Lombok");
val map = new HashMap<String, List<Integer>>(); // 复杂类型也支持
map.put("scores", List.of(90, 85, 92));
System.out.println(name + " 的技能: " + list);
// 输出:李四 的技能: [Java, Lombok]
}
}
效果:大幅减少冗余类型声明,尤其在泛型嵌套时,谁用谁知道!
技巧5:@Data
场景 :实体类里全是getXXX()
、setXXX()
、toString()
、equals()
... 等等等等!
Lombok解法 :@Data
= @Getter
+ @Setter
+ @ToString
+ @EqualsAndHashCode
+ @RequiredArgsConstructor
!
java
import lombok.Data;
@Data // 一个注解顶五个!
public class Product {
private Long id;
private String name;
private Double price;
private Integer stock;
}
// 测试:
public class Test {
public static void main(String[] args) {
Product product = new Product();
product.setId(1001L);
product.setName("无线鼠标");
product.setPrice(89.9);
System.out.println(product);
// 输出: Product(id=1001, name=无线鼠标, price=89.9, stock=null)
Product p2 = new Product();
p2.setId(1001L);
System.out.println(product.equals(p2)); // 输出: true (比较id)
}
}
效果:一个注解生成全套POJO方法,写实体类从此飞快!
总结:少写代码,多写逻辑
用了Lombok后,我最大的感受是:
代码量少了,逻辑更清晰了,加班也少了(老板:?)
这5个技巧是我在真实项目中高频使用的"黄金组合":
@Builder
→ 优雅构造对象@Slf4j
→ 日志注入神器@SneakyThrows
→ 异常处理隐身val
→ 局部变量类型推断@Data
→ POJO终极偷懒
重要提示:Lombok需要IDE安装插件支持(IDEA搜索安装Lombok插件),项目引入依赖:

在pom.xml中配置了以后才能用
下图红框中的这些就是我们日常经常用的注解了!

所以以后不用再手动写那些重复代码了!用好Lombok,把时间省下来去摸鱼... 啊不,去写更核心的业务逻辑吧!