java自訂註解

來源:互聯網
上載者:User

標籤:tor   bool   定義   分享   實現   父類   alt   介面   檔案中   

Java註解

  Annotation(註解)是JDK5.0及以後版本引入的。它可以用於建立文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時間檢查。註解是以‘@註解名’在代碼中存在的,根據註解參數的個數,我們可以將註解分為:標記註解、單值註解、完整註解三類。它們都不會直接影響到程式的語義,只是作為註解(標識)存在,我們可以通過反射機制編程實現對這些中繼資料(用來描述資料的資料)的訪問。另外,你可以在編譯時間選擇代碼裡的註解是否只存在於原始碼級,或者它也能在class檔案中出現。

在寫代碼過程常遇到的註解有@Override、@SuppressWarnings,@Override註解表示重寫父類方法,、@SuppressWarnings註解表示忽略警告資訊

關於四個作用相同註解
     @Component("info")   不分層
     @Repository("info")  dao
     @Service("info")     biz
     @Controller("info")  action

     @Value()    在一個類中注入普通屬性值

     @Resource   在一個類中注入域屬性

     @Autowired  在一個類中注入域屬性

註解(Annotation)自訂註解入門

元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation類型,它們被用來提供對其它 annotation類型作說明。Java5.0定義的元註解:
    [email protected],
    [email protected],
    [email protected],
    [email protected]

  這些類型和它們所支援的類在java.lang.annotation包中可以找到。下面我們看一下每個元註解的作用和相應分參數的使用說明。

@Target:

   @Target說明了Annotation所修飾的物件範圍:Annotation可被用於 packages、types(類、介面、枚舉、Annotation類型)、類型成員(方法、構造方法、成員變數、枚舉值)、方法參數和本地變數(如迴圈變數、catch參數)。在Annotation類型的聲明中使用了target可更加明晰其修飾的目標。

作用:用於描述註解的使用範圍(即:被描述的註解可以用在什麼地方)

  取值(ElementType)有:

    1.CONSTRUCTOR:用於描述構造器
    2.FIELD:用於描述域
    3.LOCAL_VARIABLE:用於描述局部變數
    4.METHOD:用於描述方法
    5.PACKAGE:用於描述包
    6.PARAMETER:用於描述參數
    7.TYPE:用於描述類、介面(包括註解類型) 或enum聲明

使用@interface自訂註解時,自動繼承了java.lang.annotation.Annotation介面,由編譯器自動完成其他細節。在定義註解時,不能繼承其他的註解或介面。@interface用來聲明一個註解,其中的每一個方法實際上是聲明了一個配置參數。方法的名稱就是參數的名稱,傳回值類型就是參數的類型(傳回值類型只能是基本類型、Class、String、enum)。可以通過default來聲明參數的預設值。

  定義註解格式:
  public @interface 註解名 {定義體}

  註解參數的可支援資料類型:

    1.所有基礎資料型別 (Elementary Data Type)(int,float,boolean,byte,double,char,long,short)
    2.String類型
    3.Class類型
    4.enum類型
    5.Annotation類型
    6.以上所有類型的數組

自訂註解案例:

1.自訂註解

1 @Target(ElementType.METHOD)2 @Retention(RetentionPolicy.RUNTIME)3 @Documented4 public @interface Apple {5     String name();6     String sex() default "男";7     String phone() default "15931787945";8     int age() default 2;9 }

2.使用註解的類:

1 public class AppleTest {2     @Apple(name="張朵朵")3   public void show(){4 5     }6 }

3.提取註解參數:

 1 public class Test20171010{ 2    @Test 3     public void test01(){ 4         Class<AppleTest> appleTestClass = AppleTest.class; 5         try { 6             Apple show = appleTestClass.getMethod("show").getAnnotation(Apple.class); 7             System.out.println(show.name()); 8             System.out.println(show.sex()); 9             System.out.println(show.phone());10             System.out.println(show.age());11         } catch (NoSuchMethodException e) {12             e.printStackTrace();13         }14     }15 }

執行結果:

 

java自訂註解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.