JavaScript の世界では、ユーザーのブラウザーが機能を実装していないことがよくありますが、回避策として追加のコードを追加することでサポートできます。これはしばしば「shim」(または「shiv」) と呼ばれます。#define ENABLE_XYZ_SUPPORT 1
CI では、 と thenのような前処理を使用して、コンパイル時に同様のことを行いまし#if ENABLE_XYZ_SUPPORT 1
た。
Javaにこのようなものはありますか?つまり、Java 1.7 用に設計されたソース コードを Java 1.6 でコンパイルできるようにしたいと考えています。組み込みの言語構造がない場合、おそらくこれのためのライブラリがありますか?
背景:私は Java の初心者で、最初の非常に大規模なプロジェクト (基本的には、さまざまなソースから条件付きでデータを組み立てるサーブレット) を開発しています。これはまったく新しいプロジェクトであるため、Java 1.7 の新機能のいくつかを利用することは理にかなっているように思われましたAutoCloseable
。たとえばCloseable
、try-with-resources
. ただし、必要な場合に備えて、このアプリケーションを Java 1.6 でも実行できるようにビルドできると便利です。パラメータまたは何かを追加して独自のAutoCloseable
インターフェイスを定義できるようにすると、実際には使用していないため、これはコンパイルできますtry-with-resources
-最も適切なインターフェイスを使用しようとしているだけです。
1.6用にビルドしている場合、外部ツールを実行してAutoCloseableをCloseableに置き換えるようなことができることに気づきました。ただし、それは私が探しているものではありません (十分に一般的ではありません)。
更新:明確にするために、次のようにコンパイル時に条件付きで何かできるかどうか疑問に思っています:
#if java version < 1.7
public interface AutoCloseable {
void close() throws Exception;
}
#endif
ところで、私はこのプロジェクトでmavenを使用しているので、ここで役立つ機能があれば検討する価値があります。