私は最近、Java 6 でコンパイルする必要があるコードで、いくつかの新しい Java 7 機能をいじってみました。
古いjdkでビルドすると、明らかにJava 7コードのコンパイルエラーが発生します。
C# では、プリプロセッサを使用してバージョン条件を定義し、重要なコードを #if 句で囲みます。
それを行うJavaの方法は何ですか?
私は最近、Java 6 でコンパイルする必要があるコードで、いくつかの新しい Java 7 機能をいじってみました。
古いjdkでビルドすると、明らかにJava 7コードのコンパイルエラーが発生します。
C# では、プリプロセッサを使用してバージョン条件を定義し、重要なコードを #if 句で囲みます。
それを行うJavaの方法は何ですか?
一般的に言えば、これは不可能です。javac (-target) または ant/maven/gradle ラッパーを介してターゲット バージョンを設定できます。ただし、これは下位バージョンと互換性のある機能に対してのみ機能します。また、ソース コードを読み取らせたいバージョンの javac も必要です。
短い答えは次のとおりです。いいえ。
理論的には、 と を設定-source
し-target
て、それらを異なるものにすることができます。ただし、このように機能する唯一の組み合わせは、バージョン1.1
と1.0
. それ以外の場合はすべて、ソースとターゲットに同じバージョンの Java が必要です。
Java 6を使用する必要がある場合は、ライブラリもそのバージョン用である必要があるため、そのコンパイラを使用することをお勧めします。または、Java 7にのみ存在するライブラリまたはメソッドを偶然使用することもできます。 (コンパイルされたクラスを古いものに変換するユーティリティがあります。バージョンですが、これを確認することはできません)
ところで: Java 6 は無料サポートがほぼ終了しており、Java 6 update 35 が最後の無料リリースになる可能性があります。いずれにせよ、Java 7 について考える時が来たのかもしれません。