gpt4 book ai didi

java - 将 final 字段与多个共享代码的构造函数一起使用

转载 作者:行者123 更新时间:2023-11-29 07:33:47 24 4
gpt4 key购买 nike

我需要从一个字符串中设置一些最终字段(本质上,通过对它们应用一些正则表达式,并不重要)。不同的构造函数以不同的方式获取此 String,因此构造函数如下所示

 public Foo(File file, Dog dog, ...)
{
String importantString;
//do some stuff to get importantString
setFinalFieldsFromString(importantString);
}

显然,这是行不通的,因为您不能在构造函数之外设置最终字段。所以我看到两个不太令人满意的解决方案

  • 从字段中删除“final”
  • 复制并粘贴 setFinalFieldsFromString 中的代码

有没有更好的方法?

备注:由于共享代码不在构造函数的开头,我不能从另一个调用一个构造函数。

最佳答案

使用 single primary constructor那将做最后的领域分配。所有其他构造函数将使用 this() 调用该构造函数,例如:

public Foo(File file, Dog dog, ...)
this(file, dog, getImportantString());
}

getImportantString() 是必需的,因为在 this() 调用之前您不能在构造函数中执行任何操作,而且它需要是静态的才能在构造函数中工作.

关于java - 将 final 字段与多个共享代码的构造函数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38563734/

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