やりたいことから始めて、疑問点をいくつか挙げてみましょう。
多数のプログラムのスーパーセットである一般的な Java プログラムを開発したいと考えています (それらをプログラムバリアントと呼びましょう)。特に、一般的なプログラムには、1 つまたは複数のプログラム バリアント (ただし、すべてではない) によってのみ使用されるメソッドがあります。特定の構成が与えられた場合、不要なメソッドを削除し、1 つのプログラム バリアントに対して最小限のメソッド セットのみを保持したいと考えています。
たとえば、次のような一般的なプログラムがあります。
public class GeneralProgram {
// this method is common for all variants
public void method1() {};
// this method is specific to variant 1
public void method2() {};
// this method is specific to variant 2
public void method3() {};
}
次に、バリアント 1 の構成に基づいてプログラムをプルーニングした後、結果は次のようになります。
public class GeneralProgram {
// this method is common for all variants
public void method1() {};
// this method is specific to variant 1
public void method2() {};
}
結果のクラス名が元のクラス名と同じかどうかは問題ではありません。クラスの内容を絞り込みたいだけです。
だから、ここに私の質問があります:
低レベルのテキスト処理を除いて、これを実現する方法はありますか?
実行時にaspectJを使用して特定のメソッドを無効/有効にできることは知っていますが、実際にやりたいのは、プログラムをデプロイする前にこのタスクを実行することです。この目的のためのJavaのテクニックはありますか?