成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從思路開始 Java如何實現條件編譯

開發 后端
條件編譯絕對是一個好東西。如在C或CPP中,可以通過預處理語句來實現條件編譯。但是在JAVA中卻沒有預處理,宏定義這些東西,而有時在一些項目中,我們又需要條件編譯。那么,在JAVA中,該如何實現條件編譯呢?

條件編譯絕對是一個好東西。如在C或CPP中,可以通過預處理語句來實現條件編譯。代碼如下:

  1. #IFDEF DEBUG 
  2. #UNDEF DEBUG 
  3. #ENDIF 
  4. #define DEBUG 
  5. #IFDEF DEBUUG 
  6.   /* 
  7.    code block 1 
  8.    */ 
  9. #ELSE 
  10.   /* 
  11.    code block 2 
  12.   */ 
  13. #ENDIF 

但是在JAVA中卻沒有預處理,宏定義這些東西,而有時在一些項目中,我們又需要條件編譯。那么,在JAVA中,該如何實現條件編譯呢?

我們來看一個例子。

編寫一個helloworld程序。代碼如下:

  1. public class Hello { 
  2.     public static void main(String[] args) { 
  3.         System.out.println("Hello, world!"); 
  4.     } 

保存為Hello.java并編譯,得到一個class文件,并且觀察到文件大小是417字節。然后我們對這個文件進行反編譯,用jd-gui。得到代碼如下:

  1. import java.io.PrintStream; 
  2. public class Hello 
  3.   public static void main(String[] paramArrayOfString) 
  4.   { 
  5.     System.out.println("Hello, world!"); 
  6.   } 

得到這個有什么用呢?

現在我們再來對源代碼進行修改,修改后的代碼如下。

  1. public class Hello { 
  2.     public static void main(String[] args) { 
  3.         if(false) { 
  4.             System.out.println("Hello, world!"); 
  5.         } 
  6.     } 

進行編譯,這時我們再看它的大小,只有255字節。怎樣?想到什么了吧?沒錯,編譯器會對代碼進行優化,對于條件永遠為false的語句,JAVA編譯器將不會對其生成字節碼。下面我們再來對該class文件進行反編譯,果然代碼如下:

  1. public class Hello 
  2.   public static void main(String[] paramArrayOfString) 
  3.   { 
  4.   } 

利用JAVA編譯的這一優化機制,我們就可以實現JAVA的條件編譯了。

  1. public class Hello { 
  2.     public static void main(String[] args) { 
  3.         if(false) { 
  4.             System.out.println("Hello, world!"); 
  5.         } 
  6.     } 

定義一個final的變量,然后再在if語句中使用。代碼如下:

  1. public class Hello { 
  2.     public static void main(String[] args) { 
  3.         final boolean DEBUG = true
  4.         if(DEBUG) { 
  5.             System.out.println("Hello, world!"); 
  6.         } 
  7.     } 

當條件編譯使用得多時,上面將極不利于代碼的修改及維護,這時就可以用一種更為靈活的方法。定義一個靜態類,里面專門定義用來控制條件編譯的變量。然后再在具體的代碼中導入該類,使用這些final變量。代碼如下:

  1. public class DebugConfig { 
  2.     public static final boolean BLUETOOTH_DEBUG = false
  3.     public static final boolean WIRELESS_DEBUG = false
  1. if ( DebugConfig.BLUETOOTH_DEBUG) { 
  2.     // TODO 

原文鏈接:http://msdxblog.sinaapp.com/?p=57

【編輯推薦】

  1. Java七步創建以JDBC連接數據庫的程序
  2. 面試Java前必須了解的10個概念
  3. Java應用服務器 Eclipse Virgo 3.0.2發布
  4. Java中關于OOM的場景及解決方法
  5. Java NIO之選擇就緒模式
責任編輯:林師授 來源: Geek_Soledad的博客
相關推薦

2012-11-27 10:14:01

.net條件編譯

2023-03-29 08:52:58

視覺Vue組件庫

2022-08-31 14:24:03

數字化轉型小程序平臺

2024-06-07 09:13:23

2020-09-21 07:00:42

Java內部類接口

2022-06-02 09:14:14

GNOME源碼編譯Linux 發行版

2009-07-08 18:28:57

惠普刀片刀片服務器

2019-02-22 21:26:05

2021-06-28 16:05:19

數據庫代碼技術

2021-06-30 13:45:49

SQL數據庫LSM

2019-01-29 14:29:03

微服務路由

2013-05-23 10:10:53

PHP5.5PHP編譯php

2019-07-02 16:57:20

混合云技術Linux

2011-12-03 11:04:21

SSL VPN移動設備

2009-06-03 15:14:04

SOA應用耦合

2016-08-05 14:48:00

javascripthtml前端

2023-05-23 08:01:10

Netty網絡通信

2015-09-14 09:05:49

Linux 終端Eclipse Jav

2021-10-09 09:13:08

物聯網生態系統物聯網IoT

2009-08-14 00:30:09

C#條件編譯指令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久乱弄 | 美女视频h | 91成人免费看片 | 欧美不卡一区二区三区 | 男女啪啪高潮无遮挡免费动态 | 久久精品国产亚洲a | aa级毛片毛片免费观看久 | 色婷婷久久综合 | 亚洲一区 中文字幕 | 国产精品视频导航 | 精品国产乱码久久久久久图片 | 亚洲精品www久久久久久广东 | 国产精品美女久久久久久免费 | 国产精品一区二区久久精品爱微奶 | 欧美日韩中文字幕在线播放 | 二区av| 一区二区三区欧美在线观看 | 国产精品午夜电影 | 日日欧美 | 久久一 | 亚洲一区精品视频 | 啪啪毛片| 国产高清精品一区二区三区 | 日韩一区二区成人 | 性色视频在线观看 | 一级毛片视频在线观看 | 中文字幕成人 | 黄色免费观看网站 | 99这里只有精品视频 | 欧美一区二区三区 | 韩国精品在线 | 香蕉视频1024| 99这里只有精品视频 | 久久久国产精品入口麻豆 | 国产精品久久久久久久模特 | 精品在线视频播放 | 黄色一级大片在线观看 | 亚洲综合大片69999 | 成人国产在线视频 | 久久久久久久久毛片 | 免费影视在线观看 |