1. 程式人生 > >建議 2:莫讓常量蛻變成變數

建議 2:莫讓常量蛻變成變數

說起來,感覺有點胡扯呢?常量中新增final和static怎麼可能發生改變呢?不能夠進行二次複製吧!
下面,我們可以就這段程式一塊看一下。

public class Client {   
    public static void main(String[] args) {
        System.out.println("常量會變哦:" + Const.RAND_CONST);
    }
}

/*介面常量*/
interface Const{
    //這還是常量嗎?
    public static final int RAND_CONST = new Random().nextInt();
}

RAND_CONST是常量嗎?他的值會發生變化嗎?答案是肯定的,並且這種定義方式也是極其不可取的,常量就是常量,在編譯期間就應該確定他的值,而不是在執行期間再對其進行改動。否則,一方面程式的可讀性會很差;一方面誰知道在執行過程這種會發生什麼么蛾子呢?
甭想著常量會變的這個功能來實現序列號演算法、隨機種子生成,除非是專案中的唯一解決方案(不能夠吧!),所以常量還是作為常量使用吧!