初學Java,Annotation注釋(三十八)__Java

來源:互聯網
上載者:User

Annotation 注釋,這個注釋和寫代碼時解釋代碼在幹什麼那個注釋完全不是一個東西,這裡的注釋是指代碼中的特殊標記,這些標記可以在編譯,類載入,運行時被讀取,並執行相應的處理。 通過這些標記,可以在不改變原有邏輯的情況下,在源檔案嵌入一些補充的資訊。Annotation可用於修飾包,類,構造器, 方法,成員變數,參數,局部變數的聲明。

其實Java中的Annotation和C#中的attribute是同一個東西,都是用來設定中繼資料用的,它們的區別只有少許幾個地方

下面這個文章講的很好

http://rednaxelafx.iteye.com/blog/464889

Java中有3種內建的annotation,@Override(限定重寫父類方法)、@Deprecated(標示已淘汰)、@SuppressWarningsAnnotation(抑制編譯器警告)

自訂的annotation如以下格式,需要使用@interface關鍵字,要使用annotation需引用java.lang包

下面看一個使用annotation的例子

import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME)    @Target(ElementType.METHOD)//定義一個標記注釋,不包含任何成員變數,即不可傳入中繼資料public @interface Testable {}
public class MyTest{//使用@Testable標記注釋指定該方法是可測試的@Testablepublic static void m1() {}public static void m2() {}   //使用@Testable標記注釋指定該方法是可測試的@Testablepublic static void m3() {        throw new RuntimeException("Boom");  }public static void m4(){}       //使用@Testable標記注釋指定該方法是可測試的@Testablepublic static void m5(){}      public static void m6(){}//使用@Testable標記注釋指定該方法是可測試的@Testablepublic static void m7(){            throw new RuntimeException("Crash");   }        public static void m8(){}}
import java.lang.reflect.*;public class TestProcessor{public static void process(String clazz)throws ClassNotFoundException{int passed = 0;int failed = 0;//遍曆obj對象的所有方法for (Method m : Class.forName(clazz).getMethods()) {//如果包含@Testable標記注釋if (m.isAnnotationPresent(Testable.class)){try {//調用m方法m.invoke(null);//passed加1passed++;}catch (Exception ex){System.out.printf("方法" + m + "運行失敗,異常:" + ex.getCause() + "\n");failed++; }}}//統計測試結果System.out.printf("共運行了:" + (passed + failed)+ "個方法,其中:\n" + "失敗了:" + failed + "個,\n" +  "成功了:" + passed + "個。\n"); }}
主程式類

import java.lang.reflect.*; public class RunTests{public static void main(String[] args) throws Exception {//處理MyTest類TestProcessor.process("MyTest");}}

其中m3和m7兩個方法自己拋出異常,剩下兩個空方法執行成功

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.