當前位置:科普知識站>IT科技>

java|annotation

IT科技 閱讀(2.56W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java annotation是什麼,讓我們一起了解一下?

annotation是Java增加對元數據的支援,註解(annotation)與註釋是有一定區別的,可以把註解理解爲代碼裏的特殊標記,這些標記可以在編譯,類加載,執行時被讀取,並執行相應的處理。

Java註解(Annotation)原理是什麼?

註解本質是一個繼承了Annotation的特殊接口,其具體實現類是Java執行時生成的動態代理類。而我們透過反射獲取註解時,返回的是Java執行時生成的動態代理對象$Proxy1。

透過代理對象調用自訂註解(接口)的方法,會最終調用AnnotationInvocationHandler的invoke方法。該方法會從memberValues這個Map中索引出對應的值,而memberValues的來源是Java常量池。

java annotation

實際上Java註解與普通修飾符(public、static、void等)的使用方式並沒有多大區別,下面的例子是常見的註解:

public class AnnotationDemo {      @Test   public static void A(){       System.out.println("Test.....");   }   @Deprecated   @SuppressWarnings("uncheck")   public static void B(){   }}

透過在方法上使用@Test註解後,在執行該方法時,測試框架會自動識別該方法並單獨調用,@Test實際上是一種標記註解,起標記作用,執行時告訴測試框架該方法爲測試方法。

而對於@Deprecated和@SuppressWarnings(“uncheck”),則是Java本身內置的註解,在代碼中,可以經常看見它們,但這並不是一件好事,畢竟當方法或是類上面有@Deprecated註解時,說明該方法或是類都已經過期不建議再用,@SuppressWarnings 則表示忽略指定警告,比如@SuppressWarnings(“uncheck”),這就是註解的最簡單的使用方式。

實戰操作:

首先寫一個簡單的自訂註解小程序,先自訂一個執行時註解。

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface HelloAnnotation {    String say() default "Hi";}

然後在Main函數中解析註解。

@HelloAnnotation(say = "Do it!")public class TestMain {    public static void main(String[] args) {        HelloAnnotation annotation = TestMain.class.getAnnotation(HelloAnnotation.class);//獲取TestMain類上的註解對象        System.out.println(annotation.say());//調用註解對象的say方法,並打印到控制檯    }}

執行程序,輸出結果如下:

Do it!