當前位置:科普知識站>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!