Lombok注解使用注意事项

IT 文章2年前 (2023)发布 小编
0 0 0

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

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

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

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

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

@Data
public class People {
    private int age;

    private String sex;
}

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

如果在继承类上加上注解

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

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

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

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

解决方法是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**

举例如下

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

@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),学习愉快哦![readsource]https://juejin.cn/post/7310809488515498022[/readsource]

© 版权声明

相关文章

暂无评论

暂无评论...