gpt4 book ai didi

java - 在构造函数或类声明上注释 @Builder 有什么区别? ( Lombok )

转载 作者:行者123 更新时间:2023-12-02 09:31:03 25 4
gpt4 key购买 nike

@Builder的这两种用法有什么区别?

import lombok.*;

class BuilderAnnotationOnConstructor{

Integer fieldOne, fieldTwo;

@Builder
public BuilderAnnotationOnConstructor(int fieldOne, int fieldTwo) {
this.fieldOne = fieldOne;
this.fieldTwo = fieldTwo;
}
}

@Builder
class BuilderAnnotationOnClass{

Integer fieldOne, fieldTwo;

public BuilderAnnotationOnClass(int fieldOne, int fieldTwo) {
this.fieldOne = fieldOne;
this.fieldTwo = fieldTwo;
}
}

它们都编译和运行良好,但我注意到在第二种情况下,当注释位于类声明上时出现奇怪的行为(例如,在我的一个大型项目中,属性值分配给错误/交换的变量名称;不幸的是,我没有能够在这个简单的示例中重现这些行为)

最佳答案

来自 Lombok 文档:

*现在“方法”模式已经清楚了,同样在构造函数上添加@Builder注解;实际上,构造函数只是具有特殊语法来调用它们的静态方法:它们的“返回类型”是它们构造的类,它们的类型参数与类本身的类型参数相同

最后,将 @Builder 应用于类就像将 @AllArgsConstructor(access = AccessLevel.PACKAGE) 添加到该类并将 @Builder 注释应用于此 all-args-constructor 一样。仅当您自己没有编写任何显式构造函数时,这才有效。如果您确实有显式构造函数,请将 @Builder 注释放在构造函数上而不是类上。请注意,如果您将 @Value@Builder 都放在一个类上,则 @Builder 想要生成的包私有(private)构造函数“获胜”并抑制 @Value 想要创建的构造函数。 *

来自 https://projectlombok.org/features/Builder

关于java - 在构造函数或类声明上注释 @Builder 有什么区别? ( Lombok ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57975891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com