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 閱讀(528) 評論(0)  編輯  收藏


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


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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汕尾市| 图木舒克市| 恩平市| 迁西县| 巴塘县| 搜索| 内黄县| 密云县| 唐河县| 曲水县| 巴彦淖尔市| 玉林市| 鲁甸县| 江安县| 美姑县| 尖扎县| 阆中市| 长顺县| 广州市| 鹿邑县| 西乌珠穆沁旗| 南平市| 宁阳县| 耿马| 华亭县| 汉阴县| 英山县| 鄂尔多斯市| 永吉县| 紫阳县| 泰来县| 白水县| 平和县| 黄梅县| 玛多县| 西藏| 房产| 石台县| 九江市| 南漳县| 濮阳市|