gpt4 book ai didi

java - 空白最终变量

转载 作者:行者123 更新时间:2023-11-29 08:25:52 25 4
gpt4 key购买 nike

我正在尝试合并

  1. 对变量的公开访问
  2. 非静态变量
  3. 不是预定值
  4. 一次设定值(最终)
  5. 整数或整数

更新后的代码 无法正常工作,关于“如何做”的答案一定很简单,但我需要帮助:

public class foo
{
public final int smth; //Variable might not have been initialized
public final Integer smthElse; //Variable might not have been initialized

public foo(JSONObject myObj)
{
if(myObj != null) {
try {
int extraParam = Integer.parseInt("ABCD"); //This is just an example for Exception to be called
smth = extraParam;
smthElse = extraParam;
} catch (Exception e) {}
} else {
smth = 1;
smthElse = 2;
}
}
}

附言我不想使用(private int + public getter + private setter)

最佳答案

myObj 为 null 时,不会设置最终字段。这会导致编译错误,它们必须在 foo(Object myObj, int extraParam) 构造函数完成后设置。

如果您需要创建一个 foo 的实例,可以添加一个 else block 。

public foo(Object myObj, int extraParam) {
if (myObj != null) {
smth = extraParam;
smthElse = extraParam;
} else {
smth = 0;
smthElse = 0;
}
}

或者创建一个工厂方法来执行检查。

private foo(int extraParam) {
smth = extraParam;
smthElse = extraParam;
}

public static foo from(Object myObj, int extraParam) {
return (myObj == null) ? new foo(0) : new foo(extraParam);
}

关于java - 空白最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230250/

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