日期:2014-05-20  浏览次数:20714 次

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才行。