Java基礎加強-反射、註解,java基礎反射註解

來源:互聯網
上載者:User

Java基礎加強-反射、註解,java基礎反射註解

  • 基礎加強
    • 一回顧泛型
    • 二泛型的反射
    • 三註解

基礎加強一、回顧泛型
泛型的基本概念:
ArrayList<E>為例:
ArrayList<E>中的E稱為型別參數變數
ArrayList<Integer>中的Integer稱為實際型別參數
②整個 ArrayList<E>稱為泛型型別
整個 ArrayList<Integer>稱為參數化類別型(ParameterizedType)
定義一個泛型方法:
:
// <T>:泛型定義的聲明,在傳回值前面。public <T> T findOne(Class<T> clazz) {} // 對於靜態泛型方法,都必須自己定義後才能使用public static <T> void findTwo(){}// 定義多個泛型public static <K,V> V find(K k);
定義一個帶泛型的類:
// 類層級的泛型定義,類中的"執行個體方法"就可以直接使用了。public class Demo<T> {} 
二、泛型的反射
// 擷取帶有泛型資訊的父類,例如:BaseDao<User>,這個整體稱為:ParameterizedType,Type是Class類的介面Type type = XXX.class.getGenericsSuperclass(); ParameterizedType ptype = type;Clazz clazz = ptype.getActualTypeArguments()[0];
三、註解
介紹
①從JDK5.0開始,Java增加對中繼資料(MetaData)的支援,也就是註解(Annotation)。
②Annotation其實就是代碼裡的特殊標記,它用於代替設定檔。傳統的方式中,使用配置告訴類如何運行,有了註解以後,開發人員可以通過註解告訴類如何運行。
③在Java技術裡註解的 典型應用是:可以通過反射技術得到類裡面的註解,以決定怎麼樣運行類。
基本的註解
① SupperssWarnings:抑止警告
自訂註解

① 註解的定義

public @interface MyAnnotation {}

② 註解的屬性:既不像方法,也不像欄位。
註解屬效能夠使用的類型:primitive(基本類型),String,Class,Annotation,enum或者是以上類型的一維數組。
如果給註解中的屬性賦值,可以只指定一個值,也可以指定多個值。

public @interface MyAnnotation_1 {    // 註解的屬性    String name();    // 帶預設值的屬性    int age() default 18;   }

③ 使用註解及屬性:

public class UseAnnotation {    @MyAnnotation_1(name = "ABC", age = 18)    public void test1(){}}
註解的反射
涉及到的API:java.lang.reflect.AnnotatedElement

Class,Constructor,Field,Method,Packages都實現了該介面。

// 擷取自己所擁有的指定的註解類型,aType是一個註解類型的位元組碼對象。Annotation getAnnotataion(Class<T> aType); // 返回所有的註解Annotation[] getAnnotations(); // 判斷自己有沒有指定的註解類型boolean isAnnotationPresent(Class<? extends Annotation> aType);
類的三種狀態

SOURCE: .java檔案
CLASS: .class檔案
RUNTIME:記憶體中的class,由類載入器把.class檔案載入入記憶體。

註解使用的生命週期
① 註解的 預設存放的 範圍是:位元組碼狀態。運行時(RUNTIME)是沒有的。
使用元註解改變註解的存活範圍

① 只能用於註解的註解,就是元註解

@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation_1 {}
使用元註解改變註解的置放位置
① 放在類上:@Target(ElementType.TYPE)

② 放在方法上:@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface MyAnnotation_1 {}

聯繫我們

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