lombok 父类子类同时使用@builder出错
时间: 2023-12-29 11:48:54 浏览: 250
在使用 Lombok 的 `@Builder` 注解时,如果父类和子类都使用了该注解,可能会出现冲突。这是因为 Lombok 中的 `@Builder` 注解会生成一个带有所有属性的构造方法,而父类和子类中都会生成这样的构造方法,从而导致冲突。
为了解决这个问题,可以在父类中使用 `@SuperBuilder` 注解,而在子类中使用 `@Builder` 注解。`@SuperBuilder` 注解会将子类中的 `@Builder` 注解合并到父类中,从而避免了冲突。
示例代码如下:
```java
@SuperBuilder
public class Parent {
private String name;
}
@Builder
public class Child extends Parent {
private int age;
}
```
在上面的示例代码中,父类 `Parent` 使用了 `@SuperBuilder` 注解,而子类 `Child` 使用了 `@Builder` 注解。这样就可以避免父类和子类同时使用 `@Builder` 注解时出现的冲突问题。
相关问题
Lombok @Builder 注解 @JsonFormat
`@Builder`和`@JsonFormat`注解是Lombok和Jackson库中常用的注解,它们分别用于简化Java代码的构造和JSON数据的序列化和反序列化。
`@Builder`注解可以帮助我们使用链式调用的方式来构造对象,从而减少代码的冗余,具体用法如下:
```java
@Builder
public class User {
private String name;
private int age;
}
```
在上面的代码中,我们使用`@Builder`注解来简化User类的构造,这样我们就可以使用链式调用的方式来构造User对象,如下所示:
```java
User user = User.builder()
.name("Tom")
.age(18)
.build();
```
`@JsonFormat`注解用于指定JSON数据的序列化和反序列化格式,具体用法如下:
```java
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
public Date getCreateTime() {
return createTime;
}
```
在上面的代码中,我们使用`@JsonFormat`注解来指定Date类型的createTime字段在序列化和反序列化时的格式,这里的格式为"yyyy-MM-dd HH:mm:ss"。
总的来说,`@Builder`和`@JsonFormat`注解都是非常有用的注解,它们可以帮助我们简化Java代码的构造和JSON数据的序列化和反序列化,提高我们的开发效率。
lombok中@builder的使用
@Builder是Lombok提供的一个注解,用于自动生成Builder模式的代码。使用@Builder注解后,Lombok会自动生成一个内部静态类Builder,该类包含了与被注解的类相同的属性,并且提供了一些方法用于设置这些属性的值。通过调用Builder类的build()方法,可以创建一个被注解的类的实例。
使用@Builder注解的步骤如下:
1. 在需要使用Builder模式的类上添加@Builder注解。
2. 在类中定义需要使用Builder模式的属性,并添加@Getter和@Setter注解。
3. 在需要使用Builder模式的类中,添加一个无参的构造方法,并在其中调用Builder类的build()方法。
4. 在需要使用Builder模式的类中,添加一个静态内部类Builder,并在其中定义与被注解的类相同的属性,并添加@Builder.Default注解。
5. 在Builder类中,添加设置属性值的方法,并返回Builder类的实例。
6. 在Builder类中,添加build()方法,并返回被注解的类的实例。
使用@Builder注解可以简化Builder模式的代码,提高代码的可读性和可维护性。
阅读全文