反射1

反射:

基本特徵:

  • 允許運行中的Java程序對自身進行檢查,或者說自審,並能直接操作程序的內部屬性
  • 可以通過名稱得到對象(類、屬性、方法等)
  • 運行時探究和使用編譯時未知的類
  • .選方法的時候就是反射

使用步驟:

  • 獲取class對象
  • 通過class對象探究這個類的信息
  • 操作探究出的信息
獲取class對象:
  • 三種方式:
    • New
User u = new User();
Class uClass = u.getClass();
Class strclass = "hello".getClass();
int[] intArray = new int[6];
Class arraClass = intArray.getClass();
Class uClass1 = User.class;
    • 根據類型名稱獲取class對象
Class strClass1 =String.class;
Class arrayClass = int[].class;
//JDK1.5以後纔有
Class intClass = int.class;//基本數據類型,也有Class對象
Class voidClass = void.class;//雖然不是數據類型,但他是返回類型,也有class對象
//JDK1.5之前,想要獲取int.class對象必須要如下操作
Class integerClass = Integer.class;
Class intClass1 = Integer.TYPE;
//以上兩種方法,不管用那種方法,一個類型只有一個class對象
    • 根據類型的字符串名稱獲取class對象(最多)
實現方式:調用Class.forName(”類的限定名“),記得帶包
使用範圍:只有類類型(包括接口),基本數據類型和引用數據類型
動態性:有唯一 一個可以
Class uClass2 = null;
try {                                                
//必須掌握
uClass2 = Class.forName("fanshe.User"/*字符串類型*/);
//動態性的體現,可以傳參
String className = new Scanner(System.in).next();
uClass2 = Class.forName(className);                                                
} catch (ClassNotFoundException e) {
 
}
通過class對象,探究一個類的對象
  • Field:屬性
  • Constructor:構造
  • Method:方法
  • Declared:聲明
  • 操作從class對象中探究出的信息
    • New instance:創建對象
    • Get/set:查看和修改
    • Invoke:調用方法

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