在学习使用普通类模拟枚举的实现原理时,碰到这么一句代码:Public static final Weekday MON=new Weekday();请问这里Final 的作用可不可以去掉?因为Weekday的构造函数已经被私有化了,在外语调用MON可以只同过类名就行了。 

解决方案 »

  1.   

    不使用final关键字的话别人可以MON = TUE之类的办法修改你的值. 所以final是必须的.
      

  2.   

    final加在变量上就是一个常量
      

  3.   

    去掉final关键字后,只能调用方法,不能重新赋值,所以楼主根据实际情况判断。
      

  4.   

    加上final之后,里面的值不能再被修改。如果不加的话,遇到其他函数的时候会修改函数内部的数值。
      

  5.   

    1楼说的比较清楚了,我稍微补充一句就是:无论你程序逻辑上如何保证,常量用final是“优美、推荐”的写法。
      

  6.   

    final 是定义常量   代表值不可变   不加final 是变量   值可改
      

  7.   

    这里final是必须的,要不调用时就可能会修改你的MON了
      

  8.   

    不能去掉final  final是常量  不可改变 ,拿掉就成为变量了!