我定義自己的自定義註釋Java自定義註釋:使可選屬性
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType();
}
如何,如果在所有,我可以使可選
我定義自己的自定義註釋Java自定義註釋:使可選屬性
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType();
}
如何,如果在所有,我可以使可選
您可以provide a default value該屬性的屬性:
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType() default Object.class;
}
找到了。它不能是可選的,但是默認可以聲明如下:
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType() default String.class;
}
如果沒有缺省是有意義的是「空」的值,那麼這是一個問題。
如果你需要一個默認類,並且實際上你可能需要String.class作爲一個值,可以考慮使用java.util.Void.class來代替(因爲你不能以任何其他方式實例化或真正使用它) ) – Ajax 2012-09-22 14:50:48
對於可選屬性,您需要爲該屬性提供默認值,您可以使用「默認」關鍵字提供默認值。
注意:只有一個屬性,您可以使用屬性名稱的值爲。 如果使用屬性名稱的值,則可以直接傳遞值,如@MyCustomAnnotation(true)而不是@MyCustomAnnotation(myType = true)。
謝謝;我不知道這個屬性是強制性的,如果沒有提供'默認'聲明:) – 2013-11-26 12:32:19