如何在构造函数上使用 lombok 的 @Tolerate

时间:2021-06-09 08:24:55

标签: java lombok

@Tolerate 注释是 lombok 中的一项实验性功能,其中目标类型是方法或构造函数。龙目岛 website 提到:

<块引用>

任何方法或构造函数都可以用@Tolerate 进行注解,lombok 会表现得好像它不存在一样。

它说明了一个 setter 方法的例子:

@Setter
private Date date;

@Tolerate
public void setDate(String date) {
    this.date = Date.valueOf(date);
}

在上面的例子中如果我们没有添加@Tolerate,那么lombok将NOT生成setDate(Date date),因为一个同名的方法已经存在(即使参数类型不同)。 因此,从这个示例中可以清楚地了解方法的工作原理。

但我无法理解如何将此注释用于构造函数。

@AllArgsConstructor
public class One {
    private int id;
    private String name;

    // adding @Tolerate here does nothing. 
    public One(int a, int b) {
    }
}

在上面的代码中,即使存在另一个参数数量相同但类型不同的构造函数,lombok也会生成一个全参数构造函数。

那么,我们如何在构造函数的上下文中使用 @Tolerate

1 个答案:

答案 0 :(得分:2)

@Data@Value@Builder 批注创建构造函数(@Data 情况下所有必需参数的构造函数,{{} 中所有参数的构造函数1}} 和 @Value 情况)。但是,如果不存在其他构造函数,它们只会执行这些操作。如果您创建自己的构造函数,@Builder@Data@Value 将不会创建它们的构造函数,除非您使用 @Builder 注释您自己的构造函数。< /p>

简而言之,构造函数上的 @Tolerate 只有在与 @Tolerate@Data@Value 一起使用时才会有所不同。就像 Gautham 注意到的那样,如果你将它与 @Builder@NoArgConstructor@AllArgsConstructor 一起使用,它没有任何效果。

示例:

@RequiredArgsConstructor
相关问题