final关键字迷惑
贴下如下代码:
package test;
interface aa{
public static int EASY=3;
void dd(int x);
}
public class test implements aa{
public static void main(String[] args) {
int x=5+EASY;//正常
new test().dd(++x);
}
public void dd(int x) {
// TODO Auto-generated method stub
x+=aa.EASY+++x;//报错,要去掉final
System.out.println(x);
}
}
在主函数引用接口常量正常,为什么在普通方法调用不行,叫我去掉final,某些基础知识点忘记了,忘高手解答!
------解决方案--------------------1楼和2楼已经给出了问题解答,编译器会报错是因为按你的写法aa.EASY+++x,编译器会认为你在对aa.EASY++,这样试图改变常量,所以就会报错,如果你打上括号就没事了。
------解决方案--------------------aa.EASY++改变了常量的值,所以要去掉final才行。