Lombok @SuperBuilder 没有初始化我的 class objects
Lombok @SuperBuilder is not initializing my class objects
我有一个 parent class 和一个 child class 我正在使用 @SuperBuilder
构建 child object,但似乎它根本没有初始化。
我的 parent class 看起来像这样:
@Getter
@Setter
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@SuperBuilder
public class MessageResponse {
String responseMessage;
}
我的 child class 看起来像这样:
@Getter
@Setter
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@SuperBuilder
public class ListResponse extends MessageResponse {
List<Item> itemList;
int itemCount;
}
其中 Item 是 Serializable
class.
最初 ListResponse
是
itemList = null
itemCount = 0
responseMessage = null
当我尝试使用生成器构建 ListResponse
时,它根本不会更改 ListResponse
object。我正在尝试构建
//listResponse is @Autowired from Spring and is initially as shown above.
List<Item> itemList = getItems(); // It returns a list of 15 items, i have checked in debugger, It does.
listResponse.builder()
.bucketList(itemList)
.responseMessage("Item List.")
.bucketCount(itemList.size())
.build();
即使在执行 .build()
之后 listResponse
object 的内容仍然是 (null, 0 , null)
.
我试图搜索有关 @SuperBuilder
和 @Builder
的其他参考资料,但没有得到任何结果。有人可以指出这里出了什么问题吗?
构建器总是创建一个新实例。这是构建器模式的目的,也是构建器的工作方式,无论您使用 Lombok 的 @SuperBuilder
、@Builder
还是手动构建器实现。
你可以看到builder()
方法是一个static
方法,所以它没有访问实例的权限(通常你的IDE应该在这里给你一个警告,建议改写 ListResponse.builder()
)。
如果要使用预填充现有实例字段的构建器创建新实例,可以使用 toBuilder = true
作为 @(Super)Builder
上的注释参数。然后调用 listResponse.toBuilder()
.
如果要修改实例,构建器模式不是正确的选择。改用二传手。这些也可以由 Lombok 以流畅、可链接的方式生成;有关详细信息,请参阅 @Accessors
。
我有一个 parent class 和一个 child class 我正在使用 @SuperBuilder
构建 child object,但似乎它根本没有初始化。
我的 parent class 看起来像这样:
@Getter
@Setter
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@SuperBuilder
public class MessageResponse {
String responseMessage;
}
我的 child class 看起来像这样:
@Getter
@Setter
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@SuperBuilder
public class ListResponse extends MessageResponse {
List<Item> itemList;
int itemCount;
}
其中 Item 是 Serializable
class.
最初 ListResponse
是
itemList = null
itemCount = 0
responseMessage = null
当我尝试使用生成器构建 ListResponse
时,它根本不会更改 ListResponse
object。我正在尝试构建
//listResponse is @Autowired from Spring and is initially as shown above.
List<Item> itemList = getItems(); // It returns a list of 15 items, i have checked in debugger, It does.
listResponse.builder()
.bucketList(itemList)
.responseMessage("Item List.")
.bucketCount(itemList.size())
.build();
即使在执行 .build()
之后 listResponse
object 的内容仍然是 (null, 0 , null)
.
我试图搜索有关 @SuperBuilder
和 @Builder
的其他参考资料,但没有得到任何结果。有人可以指出这里出了什么问题吗?
构建器总是创建一个新实例。这是构建器模式的目的,也是构建器的工作方式,无论您使用 Lombok 的 @SuperBuilder
、@Builder
还是手动构建器实现。
你可以看到builder()
方法是一个static
方法,所以它没有访问实例的权限(通常你的IDE应该在这里给你一个警告,建议改写 ListResponse.builder()
)。
如果要使用预填充现有实例字段的构建器创建新实例,可以使用 toBuilder = true
作为 @(Super)Builder
上的注释参数。然后调用 listResponse.toBuilder()
.
如果要修改实例,构建器模式不是正确的选择。改用二传手。这些也可以由 Lombok 以流畅、可链接的方式生成;有关详细信息,请参阅 @Accessors
。