java自定义注释:使属性可选

时间:2009-08-31 15:13:30

标签: java annotations metaprogramming

我定义了自己的自定义注释

@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation  {
    Class<?> myType();
}

如果可以,我可以将属性设为可选

3 个答案:

答案 0 :(得分:94)

您可以provide a default value获取属性:

@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation  {
    Class<?> myType() default Object.class;
}

答案 1 :(得分:3)

找到它。它不能是可选的,但默认值可以这样声明:

@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation  {
    Class<?> myType() default String.class;
}

如果没有默认值可以作为“空”值,则这是一个问题。

答案 2 :(得分:1)

对于Optional属性,您需要为该属性提供默认值,您可以使用“default”关键字提供默认值。

注意:对于只有一个属性,您可以将属性名称用作。 如果您将属性名称用作,则可以直接传递值,如@MyCustomAnnotation(true),而不是@MyCustomAnnotation(myType = true)。

See this example for more details