定義:
加載一個運行時才知道的類以及它的完整內部結構。數組
Class<PeStudent> studentClass = PeStudent.class;函數
API解釋:
1 Class 類的實例表示正在運行的 Java 應用程序中的類和接口。
2 每一個數組,全部具備相同元素類型和維數的數組都共享該 Class 對象。
基本的 Java 類型(boolean、byte等)和關鍵字 void 也表示爲 Class 對象
3 Class 沒有公共構造方法。Class 對象是在加載類時由 Java 虛擬機以及經過調用類加載器中的 defineClass 方法自動構造的。 對象
應用:
Class對象獲取類加載器:
ClassLoader classLoader = PeStudent.class.getClassLoader();
經常使用來獲取文件絕對路徑:
String path = classLoader.getResource("").toURI().getPath();接口
獲取的構造函數進行建立對象:
Constructor[] constructors = PeStudent.class.getConstructors();
PeStudent peStudents = (PeStudent) constructors[0].newInstance("11","11","11");
System.out.println(peStudents);get
Constructor constructor = PeStudent.class.getConstructor(String.class, String.class);
PeStudent peStudent = (PeStudent) constructor.newInstance("aa", "cc");
System.out.println(peStudent);虛擬機
根據方法名稱以及參數Class對象,獲取指定的method
Method method = PeStudent.class.getMethod("method");
Method method = PeStudent.class.getMethod("aa", String.class);
System.out.println(method.invoke(new PeStudent("1", "2"), "張三"));class
經過Field類給字段設置值 getField、getDeclaredField 區別前者訪問公共成員,後者能夠訪問到全部成員
PeStudent peStudent = new PeStudent("原值name", "age3歲");
Field field = PeStudent.class.getDeclaredField("name");
field.setAccessible(true); // 參數值爲true,禁止訪問控制檢查
field.set(peStudent, "替換name");構造函數
isInstance 判斷是否爲某個類的實例
System.out.println(PeStudent.class.isInstance(new PeStudent()));程序
凌晨5點的北京你見過嗎?我沒有...方法
共勉