Подтвердить что ты не робот

Пользовательская аннотация java: добавьте атрибут необязательно

Я определил свою собственную аннотацию

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

как, если вообще, могу ли я сделать атрибут необязательным

4b9b3361

Ответ 1

Вы можете указать значение по умолчанию для атрибута:

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

Ответ 2

Нашел. Он не может быть необязательным, но значение по умолчанию может быть объявлено следующим образом:

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

Если значение по умолчанию не имеет смысла как "пустое" значение, это проблема.

Ответ 3

Для дополнительного атрибута вам необходимо указать значение по умолчанию для этого атрибута, вы можете указать значение по умолчанию, используя ключевое слово default.

Примечание. Только для одного атрибута имя атрибута можно использовать как значение. Если вы используете свое имя атрибута как значение, вы можете передать это значение как @MyCustomAnnotation (true) вместо @MyCustomAnnotation (myType = true).

Подробнее см. в этом примере