gpt4 book ai didi

java - 在 Java 中初始化最终变量的问题

转载 作者:IT老高 更新时间:2023-10-28 20:51:57 24 4
gpt4 key购买 nike

我一直在 Java 中遇到一个问题的细微变化,它开始困扰我,我真的想不出一个合适的方法来解决它。

我有一个最终但动态的对象属性。也就是说,我希望该值在分配后保持不变,但每个运行时该值可能不同。所以我在类的开头声明了类级变量——比如private final FILE_NAME;。然后,在构造函数中,我给它赋值——比如 FILE_NAME = buildFileName();

当我在 buildFileName() 方法中有代码引发异常时,问题就开始了。所以我在构造函数中尝试这样的事情:

try{
FILE_NAME = buildFileName();
}
catch(Exception e){
...
System.exit(1);
}

现在我有一个错误 - “空白的最终字段 FILE_NAME 可能尚未初始化。”这就是我开始对 Java 的严格编译器有点恼火的地方。我知道这不会是一个问题,因为如果它被捕获,程序将退出......但编译器不知道这一点,因此不允许此代码。如果我尝试向 catch 添加一个虚拟分配,我会得到 - “最终字段 FILE_NAME 可能已经被分配。”我显然不能在 try-catch 之前分配默认值,因为我只能分配一次。

有什么想法吗...?

最佳答案

怎么样

String tempName = null;
try{
tempName = buildFileName();
}
catch(Exception e){
...
System.exit(1);
}
FILE_NAME = tempName;

关于java - 在 Java 中初始化最终变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2773779/

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