如果
month不是
1,
2则执行路径中没有在
monthString引用之前初始化的语句。即使is
,编译器也不会假定该
month变量保留其
2值。
month``final
在JLS,第16章,关于“明确赋值”的谈判,并在其下一个变量可以是条件,它引用之前“明确赋值”。
除了条件布尔运算符&&,||和?的特殊处理外 :和布尔值常量表达式,在流分析中不考虑表达式的值。
monthString在引用变量之前,未明确分配该变量。
在
switch块之前对其进行初始化。
String monthString = "unrecognized month";
或
default在
switch语句中的情况下将其初始化。
default: monthString = "unrecognized month";
或抛出异常
default: throw new RuntimeExpception("unrecognized month " + month);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)