Searchable.javagetAnnotations Reflection() restituisce NULL
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Searchable { }
Obj.java
public class Obj {
@Searchable
String myField;
}
void main (String [] args)
Annotation[] annotations = Obj.class.getDeclaredField("myField").getAnnotations();
Mi aspetterei che annotations
contenga il mio @Searchable
. Anche se è null
. Secondo la documentazione, questo metodo:
Restituisce tutte le annotazioni presenti su questo elemento. (Restituisce una matrice di lunghezza zero se questo elemento non ha annotazioni.) Il chiamante di questo metodo è libero di modificare l'array restituito; non avrà alcun effetto sugli array restituiti ad altri chiamanti.
che è ancora più strano (per me), in quanto restituisce null
invece di Annotation[0]
.
Cosa sto facendo di sbagliato qui e più importante, come potrò ottenere il mio Annotation
?
Sembra funzionare sulla mia macchina. Qual è la versione di Java che stai usando su runtime? Potresti controllare la riga '@Retention (RetentionPolicy.RUNTIME)' sulla tua annotazione personalizzata? Come fai a sapere che restituisce "null"? Potresti fornire lo snippet di codice che usi? – sp00m
Esattamente. Funziona con JDK 1.7.0. –
@ sp00m Ho copiato dal mio IDE, RUNTIME è disponibile. So che restituisce null poiché l'ho debugato. Sto usando JDK 1.7.0. – Aquillo