2013-10-10 9 views
6

Sto usando un'annotazione personalizzata con aspectj.passaggio del valore all'annotazione personalizzata in java

@TestLoggingAnnotation(setMessage = "I want to set value here") 
public void get() { 

    String retString = null; 
    String message = "DEFAULT"; 

    if (message == "DEFAULT") { 

     retString = "Default Logging"; 

    } else { 

     retString = "Custom Logging"; 
    } 
} 

Quanto sopra è solo semplice e codice di esempio. Il mio requisito è che voglio passare il valore del parametro dopo essere risultato dal metodo.

Nel mio caso, desidero impostare il valore retString su setMessage nel parametro personalizzato.

+4

afaik, i metodi di annotazione personalizzati non possono avere parametri. Ma mi piacerebbe essere sbagliato. – CPerkins

+0

@CPerkins '@TestLoggingAnnotation (setMessage =" Voglio impostare il valore qui ")' puoi chiamare una cosa a 'setMessage =" Voglio impostare il valore qui ".' Voglio impostare il valore di setMessage. ora va bene? –

+0

c'è un'altra risposta su stackoverflow per questo problema http://stackoverflow.com/questions/14268981/modify-a-class-definitions-annotation-string-parameter-at-runtime – RamonBoza

risposta

1

A partire da ora, le annotazioni possono assumere solo costanti di compilazione e non possono essere assegnati valori in fase di esecuzione, sebbene il loro valore possa essere utilizzato in fase di esecuzione utilizzando @Retention.

discussion follows here

0
@Target(ElementType.METHOD) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface TestLoggingAnnotation{ 
    String setMessage(); 
} 

ora utilizzare la reflection per estrarre e impostare il metodo param dubito che possiamo fare questo con varibles locali.

Problemi correlati