1

注釈を付けずにプロセッサをコンパイラに追加する方法はありますか?

基本的に、ユーザーがインターフェイスを正しく実装していない場合 (つまり、事後条件が満たされていない場合)、ビルドが失敗することを望みます。コンパイル時に、クラスがインターフェイスを実装しているかどうかを確認し、実装している場合は、コードを実行して実装が正しいかどうかを確認したいと考えています。

たとえば、getErrorMoniker() を実装するクラスがキャメルケースで文字列を返すようにしたいと考えています。

public interface MyError {
  public String getErrorMoniker();
}

public class MyErrorImplemented1 {
  @Override
  public String getErrorMoniker() { return "goodErrorMoniker"; }
}

public class MyErrorImplemented2 {
  @Override
  public String getErrorMoniker() {
    return "BADERRORMONIKER"; // I would like a compile error here
  }
}

任意の提案をいただければ幸いです。

4

1 に答える 1

1

で注釈が付けられたプロセッサ@SupportedAnnotationTypes("*")は、空の注釈セットにも適用されるため、理論的にはすべてのソース ファイルを処理できるはずです。ドキュメントから:

注釈型が存在しない場合でも注釈処理は行われますが、"*" の処理を​​サポートするユニバーサル プロセッサのみが注釈型の (空の) セットを要求できます。

戻り値をチェックすることを目標にしていますが、これは実行時ではなくコンパイル時に発生するため、おそらく機能しません。

于 2013-04-04T19:31:03.313 に答える