5

決定されたバージョンでのみ利用可能なコードが多数あるプロジェクトがあり、バグを修正するときに、すべてのコピーでそれらを修正する必要があります。とても不便です。

Javaには、#IF句がfalseの場合、コードがコンパイルされないというものはありますか?#CONST#IF

4

2 に答える 2

6

Java用の「公式」プリプロセッサはなく、広く使用されているサードパーティ製のプリプロセッサもありません。

しかし、IDEや他の多くのツールが正しく処理できないというハンディキャップに耐える気があるなら、コードで必要なプリプロセッサを使用することを妨げるものは何もありません。

そうは言っても、通常はJavaでも必要ありません。むしろ、共通のインターフェース(または共通の基本クラスを拡張するクラス)の複数の実装を提供し、実行時にそれらのいずれかを選択することをお勧めします。

ただし、コンパイル時定数ブールフラグを使用した条件付きコンパイルの形式には制限があります。

 static final DEBUG = false;

 public void frobnicate() {
   if (DEBUG) {
     doExpensiveFrobnicationDebugOperation();
   }
   doActualFrobnication();
 }

このコードを使用すると、コストのかかるメソッド呼び出しが結果のファイルのバイトコードにコンパイルされなく.classなります。

于 2011-06-24T16:14:34.017 に答える
0

Java用のプリプロセッサのようなものはないので、残念ながら条件付きコンパイルを行うことはできません。

于 2011-06-24T16:05:20.227 に答える