Как создать дополнительные параметры для собственных аннотаций?


89

Ниже приведен код аннотации.

public @interface ColumnName {
   String value();
   String datatype();
 }

Я бы хотел сделать datatypeнеобязательный параметр, например

@ColumnName(value="password") 

должен быть действующий код.

Ответы:


125

Похоже, что первый пример в официальной документации говорит сам за себя ...

/**
 * Describes the Request-For-Enhancement(RFE) that led
 * to the presence of the annotated API element.
 */
public @interface RequestForEnhancement {
    int    id();
    String synopsis();
    String engineer() default "[unassigned]"; 
    String date()     default "[unimplemented]"; 
}

1
я только посмотрел на обучающие материалы. т.е. почему я не смог найти это. может я знаю разницу между неназначенным и нереализованным
Biju CD

16
Нет никакой разницы. Это просто строковые значения. Это могли быть «Петр» и «Павел».
Sparkyspider

5
А что, если мои параметры Class<?>s?
Aetherus

В этом случае все еще применяется система типов Java. НапримерClass<?> proxy() default Object.class
Майкл Миллер

35

Чтобы сделать его необязательным, вы можете присвоить ему такое значение по умолчанию:

public @interface ColumnName {
   String value();
   String datatype() default "String";
 }

Тогда это не нужно указывать при использовании аннотации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.