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

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

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

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

@ColumnName(value="password") 

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

Ответ 1

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

/**
 * 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]"; 
}

Ответ 2

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

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

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