我想以不同的方式初始化最终字段。因此,我创建了一个枚举类型并对其进行了切换。
public enum TYPE {
A,
B,
}
我还使用断言向开关添加了默认情况,以警告我的程序员伙伴,以防他们添加新的枚举常量并忘记更新开关。
default:
assert false : "missing TYPE detected";
然而,Java 检测到我的论点中的缺陷并抱怨空白字段可能尚未初始化。我应该如何处理这种情况?
public class SwitchExample
{
public enum TYPE {
A,
B,
}
private final int foo;
public SwitchExample(TYPE t)
{
switch (t) {
case A:
foo = 11;
break;
case B:
foo = 22;
break;
default:
assert false : "missing TYPE detected";
}
// The blank final field foo may not have been initialized
}
}