<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-8  評論-39  文章-0  trackbacks-0

    編寫程序有時會用到有序常量。一個常見的情況是對命令行參數(shù)進行處理,如下的代碼片段:

     

    public class A {

               

                …….

                private static final int PARAM_1 = 0;

                private static final int PARAM_2 = 1;

                private static final int PARAM_3 = 2;

                private static final int PARAM_4 = 3;

                private static final int PARAMS_COUNT = 4;

                …….

               

                public static void main(String[] args) {

                           

                            if (args.length != PARAMS_COUNT) {

                                        System.out.println("Usage: program <Param_1> <Param_2> <Param_3> <Param_3> <Param_4>");

                                        System.exit(1);

                            }

                            callFun1(args[PARAM_1], args[PARAM_2]);

                            callFun2(args[PARAM_1], args[PARAM_3], args[PARAM_4]);

                }

    }

     

    PARAM_1PARAM_4就是我這里說的有序產(chǎn)量,這樣的常量通常被賦予一段順序的值。但如果像上面這段代碼的寫法,將會在程序維護時帶來一些小麻煩。比如增加一個新的產(chǎn)量PARAM_5,除了需要定義型的常量以外,還需要調(diào)整PARAMS_COUNT的值。如果需要在原序列中插入一個新的常量,那就更麻煩了,不僅需要調(diào)整PARAMS_COUNT的值,還需要調(diào)整插入位置之后的常量的值。如在上面的代碼中插入一個常量PARAM_NEWPARAM_3的位置:

               

                …….

                private static final int PARAM_1 = 0;

                private static final int PARAM_2 = 1;

                private static final int PARAM_NEW = 2          // New Constant

                private static final int PARAM_3 = 3;                // Need Changed

                private static final int PARAM_4 = 4;                // Need Changed

                private static final int PARAMS_COUNT = 5;  // Need Changed

                …….

               

     

    其實我們只需要引入一個靜態(tài)變量就可以比較好的解決這個問題。下面是修改后的代碼:

     

    public class A {

               

                …….

                private static int PARAM_INDEX = 0;

                private static final int PARAM_1 = PARAM_INDEX++;

                private static final int PARAM_2 = PARAM_INDEX++;

                private static final int PARAM_3 = PARAM_INDEX++;

                private static final int PARAM_4 = PARAM_INDEX++;

                private static final int PARAMS_COUNT = PARAM_INDEX;

                …….

               

    }

     

    在新的代碼中,我們引入了一個變量PARAM_INDEX,并賦予一個初始值(這里是零),借助于對這個變量,我們消除了硬編碼常量的值帶來的那些弊端。同樣插入一個新的常量,現(xiàn)在我們只需要增加新的內(nèi)容,而不需要改變原有的代碼了。代碼如下:

     

    public class A {

               

                …….

                private static int PARAM_INDEX = 0;

                private static final int PARAM_1 = PARAM_INDEX++;

                private static final int PARAM_2 = PARAM_INDEX++;

                private static final int PARAM_NEW = PARAM_INDEX++;  // New Constant

                private static final int PARAM_3 = PARAM_INDEX++;

                private static final int PARAM_4 = PARAM_INDEX++;

                private static final int PARAMS_COUNT = PARAM_INDEX;

                …….

               

    }

     

    posted on 2007-04-10 17:19 Jini 閱讀(1547) 評論(4)  編輯  收藏 所屬分類: JDK相關

    評論:
    # re: 初始化有序常量的一點小技巧 2007-04-10 18:25 | TiGERTiAN
    呵呵,有意思  回復  更多評論
      
    # re: 初始化有序常量的一點小技巧 2007-04-11 10:40 | itspy
    是個有用的小技巧。  回復  更多評論
      
    # re: 初始化有序常量的一點小技巧 2007-04-11 11:16 | Web 2.0 技術資源
    嘿嘿!~   回復  更多評論
      
    # re: 初始化有序常量的一點小技巧 2012-07-23 10:58 | GrimRaider
    贊!  回復  更多評論
      
    主站蜘蛛池模板: a级在线免费观看| 亚洲免费精彩视频在线观看| 日本中文字幕免费看| 最近中文字幕大全免费版在线 | 日本高清免费不卡视频| 中文字幕精品无码亚洲字 | 久久久久久成人毛片免费看| 国产av无码专区亚洲av果冻传媒| 亚洲无限乱码一二三四区| 九九九精品视频免费| 毛片免费vip会员在线看| 亚洲国产天堂在线观看| 一区二区免费在线观看| 最近2019中文字幕mv免费看| 亚洲国产精品18久久久久久| 91频在线观看免费大全| 亚洲桃色AV无码| 一级A毛片免费观看久久精品| 亚洲一区二区三区在线视频| 亚洲国产精品成人综合色在线| 夜夜嘿视频免费看| 亚洲jjzzjjzz在线观看| 在线免费观看你懂的| 精品亚洲永久免费精品| 一级人做人a爰免费视频| 国产精品国产亚洲精品看不卡| 久久久免费的精品| 亚洲高清中文字幕免费| 99久久国产热无码精品免费 | 亚洲美女aⅴ久久久91| 国产在线观看免费视频软件 | 国产精品亚洲专区无码牛牛| 在线观看免费人成视频| 亚洲精品美女在线观看| 99久久免费精品高清特色大片| 久久久久久久久亚洲| 久久免费看少妇高潮V片特黄| 国产AV无码专区亚洲AV男同 | 国产在线播放免费| 精品韩国亚洲av无码不卡区| 亚洲精品无码久久久影院相关影片|