Java數據庫開發與實戰運用---反射

反射的概述

java反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能成爲java語言的反射機制。

java反射機制的作用

是用來編寫一些通用性較高的代碼或者框架的時候使用

Class類

java中java.lang.Class類用於表示一個類的字節碼(.class)文件

如何得到某個class文件對應的Class對象

已知類和對象的情況下

  • 類名.class
  • 對象.getClass()-----Object類提供

未知類和對象的情況下

  • Class.forName("包名.類名")

Constructor類

Constructor類的實例對象代表類的一個構造方法

得到某個類所有的構造方法

Constructor [] constructors = Class.forName("java.lang.String").getConstructors();

得到指定的構造方法並調用

Constructor constructor = Class.forName("java.lang.String").getConstructor(String.class);

String str = (String)constructor.newIanstance("abc");

Class類的newInstance()方法來調用類的默認構造方法

String obj = (String)Class.forName("java.lang.String").newInstance();

Field類

  • Field類代表某個類中的一個成員變量,並提供動態的訪問權限
  • Field對象的獲得
  1. 得到所有的成員變量
Field[] fields = c.getFields();//取得所有public屬性(包括父類繼承)

Field[] fields = c.getDeclaredFields();//取得所有聲明的屬性

得到指定的成員變量

Field name=c.getField("name");

Field name= c.getDeclaredField("name");

設置變量是否可以訪問

  • field.setAccessible(boolean);

Field變量值的讀取,設置

  • field.get(obj);
  • field.set(obj,value);

Method類

Method類代表某個類中的一個成員方法

method對象的獲得

獲得所有方法

  • getDeclaredMethods()
  • getMethods()

獲得指定的方法

  • getDeclaredMethod(String name,Class<?>...parameterTypes)
  • getMethod(String name,Class<?>...parametrTypes)

通過反射執行方法

  • invoke(Object obj,Object...args)

 

 

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