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

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

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

如果可以的话,我可以如何使属性可选

您可以为属性提供默认值 :

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

find了。 它不能是可选的,但默认可以这样声明:

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

如果没有任何默认值可以作为“空”的值,那么这是一个问题。

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

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

看到这个例子的更多细节