Як створити необов’язкові параметри для власних анотацій?


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
Різниці немає. Це просто значення String. Вони можуть бути "Пітер" і "Пол".
sparkyspider

5
А що, якщо мої параметри Class<?>s?
Ефір

У цьому випадку все ще застосовується система типів 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.