行业资讯 2025年08月6日
0 收藏 0 点赞 682 浏览 1676 个字
摘要 :

文章目录 @Data注解放在继承类注意事项 @Builder避坑,默认不生成无参构造方法 布尔类型isXXX避坑 @ToString无使用导致的**StackOverflowError** 本文主要讲解关于Lomb……




  • @Data注解放在继承类注意事项
  • @Builder避坑,默认不生成无参构造方法
  • 布尔类型isXXX避坑
  • @ToString无使用导致的**StackOverflowError**

本文主要讲解关于Lombok注解使用注意事项相关内容,让我们来一起学习下吧!

Lombok虽然使用很方便,可以节省很多无效代码输出,但是使用时稍不注意,会有意想不到的意外。本文主要针对一些坑进行总结。

@Data注解放在继承类注意事项

@Data放在普通类上面,会生成6种类型代码,【空构造方法】、【Get/Set方法】、【equals方法】、【canEqual】、【hashCode】、【toString】

@Data
public class People {
    private int age;

    private String sex;
}

生成字节码反编译后代码如下Lombok注解使用注意事项

如果在继承类上加上注解

@Data
public class Student extends People {
    private int level;
}

生成代码如下Lombok注解使用注意事项

可以看到,默认情况下equals hashCode toString方法都不会带上父类方法

解决方法是ToString EqualsAndHashCode方法加上callSuper = true

@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class Student extends People {
    private int level;
}

Lombok注解使用注意事项

@Builder避坑,默认不生成无参构造方法

@Builder
public class Dog {
    private String name;

    private int age;
}

生成的代码如下Lombok注解使用注意事项

解决方法是加上有参和无参的构造方法注解

@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Dog {
    private String name;

    private int age;
}

Lombok注解使用注意事项

布尔类型isXXX避坑

boolean类型不会生成get方法,是生成isxxx方法,如果布尔类型是基本类型,还是会isxxx

@Data
public class Cat {
    private boolean isOver;
}

Lombok注解使用注意事项
解决措施是换成Bollean或者变量不要使用isxxx命令Lombok注解使用注意事项

@ToString无使用导致的**StackOverflowError**

举例如下

@ToString
@Setter
@Getter
public class Node {
    private Object vale;
    private Node left;
    private Node parent;
    private Node right;

    public static void main(String[] args) {
        Node node = new Node();
        node.left = new Node();
        node.right = new Node();
        node.left.parent = node;
        System.out.println(node.left);
    }
}

执行main方法后,直接报错
Lombok注解使用注意事项
主要原因是和parent打印循环依赖,最终导致toString栈溢出。

解决方案是加上exclude

@ToString(exclude = {\"parent\"})
@Setter
@Getter
public class Node {
    private Object vale;
    private Node left;
    private Node parent;
    private Node right;

    public static void main(String[] args) {
        Node node = new Node();
        node.left = new Node();
        node.right = new Node();
        node.left.parent = node;
        System.out.println(node.left);
    }
}

以上就是关于Lombok注解使用注意事项相关的全部内容,希望对你有帮助。欢迎持续关注潘子夜个人博客(www.panziye.com),学习愉快哦!

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/10080.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号