Ho creato la mia annotazione, che utilizzo tramite riflessione per prendere una decisione nel mio codice. L'annotazione ha un valore predefinito impostato per il suo unico elemento. C'è un modo per accedere al valore predefinito tramite riflessione?Ottieni il valore dell'elemento predefinito dall'annotazione in Java
PageableRequestMapping.java (Annotazione)
package org.tothought.controllers.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface PageableRequestMapping {
String variablePath() default "/";
}
Psuedo codice per recuperare Valore predefinito
private int parsePageNumber(StringBuffer requestURL,
PageableRequestMapping pageableRequestMapping) {
String variablePath = pageableRequestMapping.variablePath();
//Psuedo code doesn't work in Java, included to illustrate intentions
if(variablePath.equalsIgnoreCase(pageableRequestMapping.variablePath().default())){
//handle default case
}else{
//handle different case
}
return 0;
}
La mia ricerca del problema si è presentato nessun esempio. Ho teorizzato che si potesse accedere a questo valore in modo statico attraverso la classe, ma non è possibile. Quindi mi rimangono due domande.
- È possibile ottenere il valore predefinito di un elemento all'interno di un'annotazione?
- Se sì, come?
Inoltre, so che potrei codificare questo valore, tuttavia vorrei rendere il programma leggermente più robusto.
La soluzione restituisce null; Sto controllando per assicurarsi che non sia io. Questo codice è stato eseguito? –
Ho scritto un programma di test, che funziona correttamente: http://pastie.org/5356931 – Vulcan
L'ho appena capito e il tuo incolla lo ha confermato. Devi ottenere la classe in modo statico. Invece di 'pageableRequestMapping.getClass' devi usare' PageableRequestMapping.class'. Mi chiedo perché ottenere la classe dall'istanza sia diverso dall'accesso statico alla classe. Grazie per l'ottima risposta, lo apprezzo. –