Java custom annotation: сделать атрибут необязательным
Я определил свою собственную аннотацию
@Target(value={ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
Class<?> myType();
}
как, если вообще, я могу сделать атрибут необязательным
3 ответов:
вы можете указать значение по умолчанию для атрибутов:
@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; }Если по умолчанию не может иметь смысл как "пустое" значение, то это проблема.
для необязательного атрибута вам нужно указать значение по умолчанию для этого атрибута вы можете указать значение по умолчанию с помощью ключевого слова "default".
Примечание: только для одного атрибута вы можете использовать имя атрибута как стоимостью. Если вы используете имя атрибута как стоимостью вы можете напрямую передать значение, как это @MyCustomAnnotation(true) вместо @MyCustomAnnotation (myType = true).
Comments