Bagaimana cara membuat parameter opsional untuk anotasi sendiri?

89

Berikut adalah kode anotasi

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

Saya ingin membuat datatypeparameter opsional, misalnya

@ColumnName(value="password") 

harus menjadi kode yang valid.

Biju CD
sumber

Jawaban:

125

Sepertinya contoh pertama dalam dokumentasi resmi mengatakan itu semua ...

/**
 * 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
sumber
1
saya hanya melihat tutorialnya. yaitu mengapa saya tidak dapat menemukan ini. bolehkah saya tahu perbedaan antara tidak ditetapkan dan tidak diterapkan
Biju CD
16
Tidak ada perbedaan. Itu hanya nilai String. Mereka bisa jadi "peter" dan "paul".
sparkyspider
5
Dan bagaimana jika parameter saya adalah Class<?>s?
Aetherus
Dalam hal ini, sistem tipe Java masih berlaku. MisalnyaClass<?> proxy() default Object.class
Michael Miller
35

Untuk menjadikannya opsional, Anda dapat menetapkannya ke nilai default seperti itu:

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

Maka itu tidak perlu ditentukan saat menggunakan Annotation.

Johannes Wachter
sumber