常量蛻變成變量?你胡扯吧,加了final和static的常量怎麼可能會變呢?不可能二次賦值的呀。真的不可能嗎?看我們神奇的魔術,代碼如下:
public class Client{
public static void main(Stringargs){
System.out.println("常量會變哦:"+Const.RAND_CONST);
}
}
/*接口常量*/
interface Const{
//這還是常量嗎?
public static fnal int RAND_CONST=new Random().nextInt();
}
RAND_CONST是常量嗎?它的值會變嗎?絕對會變!這種常量的定義方式是極不可取的,常量就是常量,在編譯期就必須確定其值,不應該在運行期更改,否則程序的可讀性會非常差,甚至連作者自己都不能確定在運行期發生了何種神奇的事情。
甭想著使用常量會變的這個功能來實現序列號算法、隨機種子生成,除非這真的是項目中的唯一方案,否則就放棄吧,常量還是當常量使用。
注意 務必讓常量的值在運行期保持不變。