final int a, b;
if (condition1) {
a = get(dynamicValues);
b = get(dynamicValues);
}
if (condition2) {
int c = b + a;
display(c);
}
在这种类型的代码中,编译器要求初始化 a 和 b,在满足条件 1 之前我无法执行此操作。由于小时和分钟的值不断变化,因此 a 和 b 必须是最终的。 上面编写的代码非常通用,只是为了让您了解我的问题。
更新:这里的问题是 condition2
是 condition1
的 else
条件之一。所以也不能使用else语句。
动态值这里是像“小时和分钟”这样总是变化的值。当满足条件1时,a和b都以小时和分钟初始化,条件2肯定会在条件1之后的某个时间点发生。所以需要计算condition2和condition1的时间差。
最佳答案
如果条件1为假,a和b保持未初始化。这就是编译器提示的原因。添加else分支即可正确编译
if(condition1)
{
a=cal.get(Calendar.HOUR);
b=cal.get(Calendar.MINUTE);
} else {
a = 0;
b = 0;
}
关于java - 如何在另一个 block 中使用属于一个 block 的最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32212636/