今天写了点代码,代码很简单,在一个函数中使用了switch 语句,
int type = getType();
switch(type) {
case MyClass.STATIC_FIELD:
break;
case default:
break;
}
在MyClass 中STATIC_FIELD的定义如下:
public static int STATIC_FIELD = 1;
由于我当时的工程使用了自己打包的jar做lib,我还以为是以为修改的jar包没有引用好,查了半天,发现是引用的最新的jar包,挠头半天,猛然间发现定义的常量没> 有加上final 关键字!赶忙加上,编译顺利通过。正确的代码应该是
public static final int STATIC_FIELD = 1;
有时候写代码会产生一种错觉,机器或者编译器的问题,其实这种情况发生的概率非常低。一般情况下,IDE给出的警告,错误信息都是正确的,我们的第一反应应该是
沿着这些提示信息思考问题,而不是跑偏了的去错怪工具。