public class Test1 {
static final int i;
static{
if(3<2){
i = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
public class Test2 {
static final int i;
static{
if(3>2){
i = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
类Test1编译失败,Class Test2编译成功.
任何人都可以告诉我编译器如何能够在if条件下评估表达式吗?
小智 5
static final int i;
Run Code Online (Sandbox Code Playgroud)
需要在静态初始化器初始化,因为它是最终的.
static{
if(3<2){
i = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
因为3 <2字面或常量,编译器能够检测到你死的部分代码并且不初始化i.
添加一个else案例并在i那里做一些初始化.
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |