2013-10-10 40 views
6

我在aspectj中使用自定義註釋。將值傳遞給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"; 
    } 
} 

以上只是簡單的示例代碼。我的要求是我想從方法產生後傳遞參數值。

在我的情況下,我想在自定義參數中將retString的值設置爲setMessage

+4

afaik,自定義註釋方法不能有參數。但我很想做錯。 – CPerkins

+0

@CPerkins @TestLoggingAnnotation(setMessage =「我想在這裏設置值」)'你可以調用一個東西到'setMessage ='我想在這裏設置值'.'我想設置setMessage的值。現在可以嗎? –

+0

這個問題在stackoverflow上還有另一個回覆http://stackoverflow.com/questions/14268981/modify-a-class-definitions-annotation-string-parameter-at-runtime – RamonBoza

回答

1

截止目前,註釋只能編譯常量,並且不能在運行時分配值,但它們的值可以在運行時使用@Retention。

discussion follows here

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

現在使用反射來提取和設置方法PARAM我懷疑我們可以與當地的可變因素做到這一點。

相關問題