17

ifdefsCのようにJavaで条件付きインポートを行う方法これは私が達成しようとしているものです

ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
4

7 に答える 7

20

Javaで条件付きインポートがありません

ただし、完全修飾名を使用して、条件付きで同じ名前の異なるクラスを使用できます

例えば:

if(useSql){
  java.sql.Date date = new java.sql.Date()
}else{
  java.util.Date date = new java.util.Date()
}
于 2012-07-02T05:15:50.853 に答える
4

従来の if ステートメントを使用すると、 do をインポートする代わりに、呼び出すことができるオブジェクトClass.forName("example.ExampleClass")が返されます。存在しない可能性のある依存関係のコンパイル時エラーを回避し、条件付きインポートに似た何かを行うことができます。ClassClass.newInstance()

于 2016-10-05T08:11:05.740 に答える
1

これは Java ではサポートされていません。
#IFDEF は C++ のプリプロセッサ ステージで実行されることに注意してください。Java ではサポートされていません。
試すことができるのは、注釈プロセッサのようなもので、JDK 1.5 で注釈が導入される前のものです。
さらに、注釈を使用してコンパイル時に処理することもできます。
このブログはいくつかの情報を提供します。

于 2012-07-02T05:25:44.487 に答える
1

Javaには条件付きインポートがありません

于 2012-07-02T05:16:46.843 に答える
1

Java コメント プリプロセッサは、結果ドキュメントのプレフィックス セクションとポストフィックス セクションをサポートし、クラスのインポート セクションを形成するのに非常に便利です。クラスの途中でもインポート文字列を配置できます。

//#ifdef FLAG
//+prefix
import some.class.Clazz;
//-prefix
   Clazz.call();
//#endif
于 2015-04-03T14:53:56.713 に答える
0

あなたがやろうとしていることは有効な考えですが、代わりにモックを使用する必要があります。Mockitoはそのための優れたライブラリです。

パラダイムは少し異なりますが、モッキング ライブラリを使用した単体テストを調べて、それを理解する必要があります。

于 2013-12-16T21:15:12.437 に答える
-1

Java は条件付きをサポートしていませんimport

于 2012-07-02T05:19:43.083 に答える