004反射&註解

 

一.反射的好處:

  • 1. 可以在程序運行過程中,操作這些對象。
  • 2. 可以解耦,提高程序的可擴展性。

二.反射獲取Class對象的三種方式

  •  1.Class.forName("全類名")
  •  2.類名.class
  •  3.對象.getClass()

三. 反射的方法創建對象和獲取與執行方法

 1.無參構造
 Class class=Class.forName("全類名");
 Object object=class.newInstance();
 2.有參構造
 Class class=Class.forName("全類名");
 Constructor constructor= class.getConstructor(Class...構造方法的參數類型);
 Object object = constructor.newInstance();
 
 3.獲取方法
 
 Method method=class.getMethod(String "方法名",Class...方法的參數類型);
 
 4.執行方法
 
 method.invoke(類對象,...方法的實際參數);  //返回的參數類型與方法一致

1.定義註解格式

public @interface 註解名稱{
    屬性列表;
}

2.屬性列表格式

  •         格式1:數據類型 屬性名();
  •         格式2:數據類型 屬性名() default 默認值;

3.元註解(限制註解的使用位置)

 @Target
  作用:指明此註解用在哪個位置,如果不寫默認是任何地方都可以使用


   可選的參數值在枚舉類 ElemenetType**中包括:
  TYPE: 用在類,接口上
 FIELD:用在成員變量上
 METHOD: 用在方法上
 PARAMETER:用在參數上
 CONSTRUCTOR:用在構造方法上
 LOCAL_VARIABLE:用在局部變量上
 
@Retention

作用:定義該註解的生命週期(有效範圍)
  可選的參數值在枚舉類型RetentionPolicy中包括
 SOURCE:註解只存在於Java源代碼中;
CLASS:註解存在於Java源代碼、編譯以後的字節碼文件中;
RUNTIME:註解存在於Java源代碼中、編譯以後的字節碼文件中、運行時內存中;

4.註解中常用的方法

boolean isAnnotationPresent(註解的類名.class)  判斷是否有註解
        
  getAnnotation(註解.class)  獲取註解對象

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章