1

Bean用に独自のバリデーターとコードジェネレーターを作成したいと思います。注釈を定義し、フィールドに注釈を付けます。それらを検証するとき:

public boolean validate(Object obj) {
    Class clazz = obj.getClass();
    for (Field field : clazz.getDeclaredFields()) {
        for (Annotation annotation : field.getAnnotations()) {
            ...//What to do here
        }
    }
    return false;
}

つまり、私のアノテーションは@NotEmptyです

私は好きになるべきですか、if else if else ...それとも他の短い方法がありますか(そして比較するために使用するのは、私が見ている注釈、つまり@NotNull-> with annotation.equals( "NotNull"))ですか?私はそれをどのように実装できるかを意味します。一方、プロジェクトLombokには次のような注釈があります。

@Getter @Setter

クラスのゲッターとセッターを動的に(またはコンパイルする前に)生成する方法(他のライブラリなしでJavaだけで実装したい)?

4

1 に答える 1

2

すべてのアノテーションをループするよりも、必要なアノテーションを検索する方がよいと思います。次のように注釈が存在するかどうかを確認できます。

field.isAnnotationPresent(NotEmpty.class)

そして、注釈を取得して、使用できる要素を確認するには、次のようにします。

Annotation notEmpty = field.getAnnotation(NotEmpty.class)

実行時にクラスを変更するには、これがあなたが探しているものだと思いますここにASMのチュートリアルがあります。

于 2012-06-11T13:30:27.827 に答える