gpt4 book ai didi

带有@Builder.Default 的Java 记录

转载 作者:行者123 更新时间:2023-12-05 05:39:37 25 4
gpt4 key购买 nike

我想知道有什么方法可以将 java 记录与 lombok 的 @Builder.Default 结合起来?让我们考虑一个带有用于创建新文件的属性对象的示例。

Java 14 之前

@Value
@Builder
public class FileProperties {
@Builder.Default
String directory = System.getProperty("user.home");
@Builder.Default
String name = "New file";
@Builder.Default
String extension = ".txt";
}

Java 14

@Builder
public record FileProperties (
String directory,
String name,
String extension
) {}

但是万一我尝试使用类似的东西

@Builder
public record FileProperties (
@Builder.Default
String directory = System.getProperty("user.home")
) {}

编译器将因错误而失败,表明不允许使用此类语法。我们有解决这个问题的方法吗?

最佳答案

如果您想做的不仅仅是在容器中记录值,请不要使用 recorde。在这种情况下,你不应该使用 recorde,因为它不允许你指示一些不同的东西,然后简单地记录你的论点。

如果你想为你正在创建的这个类的任何实例设置一个默认值,你需要一个“普通”构造函数。

这就是为什么您不能(再次)在记录中设置值。

关于带有@Builder.Default 的Java 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72635074/

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