2011-08-15 9 views
29

Javaは、たとえば、注釈の値を定義できます:MyValue注釈のデフォルト値を設定することは可能ですが、私は必須にすることが可能であるかどうかを疑問に思ったJavaアノテーションの値を必須にすることはできますか?

public @interface MyAnnotation { 
    int MyValue(); 
} 

。私が意味するのは、クラスまたはフィールドに注釈を付けるときにユーザにMyValueの値を指定させることです。

私はドキュメントを調べましたが、何も見つかりませんでした。誰かがこの問題の解決策を持っているのですか、注釈の値を必須にすることは不可能ですか?

答えて

53

デフォルト値を指定しない場合は必須です。

public @interface MyAnnotation { 
    int MyValue(); 
} 

annotation MyAnnotation is missing MyValue

+1

どのように私はそれをお見逃しでしたか、ありがとう! – JVerstry

4

を考えると

@MyAnnotation 
public class MyClass { 

} 

は、タイムアウト値とコンパイルエラーになりますクラス:MyValue属性を使用せずに、アノテーションを使用して、例えば、このコンパイラエラーを生成します。

1

私はこれを試していませんが、値を特定の値に強制したい場合は、おそらく型を列挙型にします。

public @interface MyAnnotation { 
    Status status(); 
} 

ここで、ステータスはenumです。