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

89

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

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

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

@ColumnName(value="password") 

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

Biju CD
источник

Ответы:

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]"; 
}
Riduidel
источник
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";
 }

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

Йоханнес Вахтер
источник