qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java 條件編譯 Conditional Compilation

           根據Java編譯器的優化的機制,Java也能夠提供條件編譯。對于條件設為false的語句,編譯器將不對條件覆蓋的代碼段生成字節碼。
            不僅可以用簡單的boolean常量值來做條件編譯,還可以用字符串常量及任何其他類型的常量.
            例如:
            1. 簡單的boolean常量。
          final
          boolean
          isDebug
          =
          true;
          if(isDebug)
          {
          //debug模式狀態
          System.out.println("現在是debug模式!");
          }
            2. 字符串常量。
            這里要注意的是不能用equals方法,必須用簡單的判斷符號(==, != ....)
          final
          String
          debug
          =
          "true";
          final
          String
          currentMode
          =
          debug;
          if(currentMode
          ==
          debug)
          {
          //debug模式狀態
          System.out.println("現在是debug模式!");
          }


          3. 其他常量就不設置了
            當然我們可以寫個CompilationConfig類,里面僅設置所有要用條件編譯的選項。
            這里我寫了個示例,呵呵,記錄下以后不要忘記了,也希望能夠幫助需要這方向東東的人。
            ConmpilationCofig.java
          package
          com.litefeel.javaConditionalCompilationTest;
          /**
          * 這是一個配置條件編譯的類,實際編譯后這個類并不跟其他文件關聯
          * @author lite3
          *
          */
          public
          class
          CompilationConfig
          {
          //配置是否是debug模式, 關鍵字 final是啟用條件編譯的關鍵
          static
          public
          final
          boolean
          isDebug
          =
          true;
          //用條件編譯來判別不同的平臺
          static
          public
          final
          String
          platform1
          =
          "platfor1";
          static
          public
          final
          String
          platform2
          =
          "platform2";
          //當前所用的平臺
          static
          public
          final
          String
          currentPlatform
          =
          platform1;
          }
            javaConditionalCompilationTest.java
          package
          com.litefeel.javaConditionalCompilationTest;
          public
          class
          ConditionalCompilationTest
          {
          public
          ConditionalCompilationTest()
          {
          //用條件編譯來去除多余代碼
          //這里僅僅是輸出語句,也可以是其他邏輯代碼
          final
          String
          debug
          =
          "true";
          final
          String
          currentMode
          =
          debug;
          if(currentMode
          ==
          debug)
          {
          //debug模式狀態
          System.out.println("現在是debug模式!");
          }
          //用條件編譯來判別不同的平臺
          //平臺1
          if(CompilationConfig.currentPlatform
          ==
          CompilationConfig.platform1)
          {
          System.out.println("這里是平臺1的輸出!");
          }
          //平臺2
          if(CompilationConfig.currentPlatform
          ==
          CompilationConfig.platform2)
          {
          System.out.println("這里是平臺2的輸出!");
          }
          }
          static
          public
          void
          main(String[]
          args)
          {
          //實例化條件編譯
          new
          ConditionalCompilationTest();
          }
          }



          編譯后,javaConditionalCompilationTest.class 反編譯后為:
          package
          com.litefeel.javaConditionalCompilationTest;
          import
          java.io.PrintStream;
          public
          class
          ConditionalCompilationTest
          {
          public
          ConditionalCompilationTest()
          {
          String
          debug
          =
          "true";
          String
          currentMode
          =
          "true";
          System.out.println("現在是debug模式!");
          System.out.println("這里是平臺1的輸出!");
          }
          public
          static
          void
          main(String[]
          args)
          {
          new
          ConditionalCompilationTest();
          }
          }
            很明顯已經去掉了平臺2的代碼。
            如果不知道怎么反編譯,請使用Java 反編譯工具反編譯就行了。

          posted on 2013-10-18 11:36 順其自然EVO 閱讀(527) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年10月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 邓州市| 辽宁省| 南溪县| 文成县| 桂阳县| 西峡县| 平罗县| 巴青县| 张家港市| 宜宾市| 崇阳县| 澄迈县| 伊宁县| 铁岭市| 行唐县| 泗洪县| 海安县| 穆棱市| 固安县| 时尚| 景宁| 郴州市| 东阳市| 乌海市| 乾安县| 托里县| 恩平市| 大连市| 桃江县| 洞头县| 丰顺县| 四子王旗| 右玉县| 万源市| 余姚市| 罗山县| 永昌县| 崇信县| 绥棱县| 全椒县| 镇赉县|