0

pojo フィールドに大文字または小文字を強制することにより、JAVA でカスタム注釈を作成するための助けに感謝します。以下のようなものを取得したい

// CaseMode enum would be
public enum CaseMode {
   UPPER, LOWER;
}

@Target({ ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Case {
    // NEED HELP HERE
}

public class Customer {
    @Case(value=CaseMode.UPPER)
    private String fName; 
    { set; get; }
}

デフォルトでは、Customer オブジェクトの setter メソッドは、注釈に基づいてデータを強制的に UPPERCASE または LOWERCASE で格納する必要があります。これを取得するための助けに感謝します。

前もって感謝します

4

2 に答える 2

1

注釈は Java の受動的な要素です。彼らはどんな振る舞いもできません。@mabaが言ったように、注釈宣言内にコードを書くことはできません。

あなたがやろうとしていることと似たようなことをするためには、注釈を検出して何らかの作業を実行するものが必要です。いくつかの選択肢があります。

カスタムのコンパイル時注釈プロセッサを作成すると、コンパイル前にソース コードを前処理できます。

アスペクト指向プログラミングは、コンパイル時と実行時の両方で機能します。理解するのは比較的簡単ですが、デプロイする場所に応じて、プロジェクトと共にいくつかのツールをセットアップする必要があります。

動的プロキシも単純ですが、おそらくいくつかのインターフェイスを宣言し、クラスの代わりにそれらを使用するなどして、コードがオブジェクトにアクセスする方法を変更する必要があります.

コード生成ライブラリは、スペクトルの複雑な側面に分類され、多くの柔軟性を提供します (たとえば、Hibernate が POJO オブジェクトで魔法を実行する方法です)。

于 2012-08-30T12:25:26.697 に答える
0

あなたの声明// NEED HELP HEREは次のとおりでなければなりません。

@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Case {
    CaseMode value();
}

そこにコードを入れることができると思うなら、あなたは間違っています。

于 2012-08-30T11:31:52.513 に答える