gpt4 book ai didi

java - 这个 final 变量将如何被赋值而不被初始化?

转载 作者:行者123 更新时间:2023-11-29 07:53:22 26 4
gpt4 key购买 nike

我有一个最终变量,save,它是一些信息的可序列化类。我试图做的是将最终变量设置为可序列化类,但是我收到了一些相互矛盾的警告。我试图做到这一点,以便如果文件不可加载/不存在,它只会创建一个新实例,否则它将使用旧实例。

我目前的问题在构造函数打开、关闭和从 ObjectInputStream 读取对象时的代码中进行了注释

private final CannonSet save;


public CannonManager(ManCannon plugin) { // Warning that save is not initialized
if (/* some conditional statement */) {
//lot of code removed, unnecessary to problem
//essentially, save was set conditionally here (loaded from file)
this.save = new CannonSet();
}
if (this.save == null) {
this.save = new CannonSet(); // Warning that save may have already been set
}
}

最佳答案

看起来您只需要在整个方法范围内声明您的临时对象,在您正在检查 this.save 的底部测试它是否为 null,然后进行赋值。基本上,只有一行用于分配实例字段。缩写自您的代码:

public CannonManager(ManCannon plugin) {
CannonSet temp = null;
try{
// stuff happens
temp = (CannonSet) in.readObject();
}catch( ... ){
// exception handling
}
if(temp == null){
this.save = new CannonSet();
}else{
this.save = temp;
}
}

关于java - 这个 final 变量将如何被赋值而不被初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595716/

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