【Java反射機制】_認識Class類筆記
本章目標:
掌握Object類中getClass()方法的作用
認識java反射機制
3、具體情況
在正常情況下,必須知道一個類的完整路徑之後才可以執行個體化對象,但是在java中也允許通過一個對象來找到所在的類資訊,那麼這實際上就是Class類的功能。
package org.lxh.demo15.getclassdemo;class X{};public class GetClassDemo01{ public static void main(String args[]){ X x = new X(); //執行個體化X類的對象。 System.out.println(x.getClass().getName());//得到對象所在的類 }}
此時,所有的操作都是反著來的。
Object類的支援
在Object類中定義了以下的方法,此方法將被所有子類繼承。
public final Class getClass()
以上的方法傳回值的類型是一個"Class"類,實際上此類是Java反射的源頭,實際上所謂反射從程式的運行結果來看也很好理解,即:可以通過對象反射求出類的名稱。
Class類
Class本身表示一個類的本身,通過Class可以完整的得到一個類中的完整結構,包括此類中的方法定義,屬性定義等。
Class類的常用方法
此類在JDK文檔中沒有發現任何的構造方法,所以此類的構造方法被私人化了。
執行個體化Class類對象的方法有三種:
第一種:通過forName()方法
第二種:類.class
第三種:對象.getClass()
package org.lxh.demo15.getclassdemo;class X{}public class GetClassDemo02{ public static void main(String args[]){ Class<?> c1 = null; Class<?> c2 = null; Class<?> c3 = null; try{ //以下的操作形式是開發中最常用的一種形式 c1 = Class.forName("org.lxh.demo15.getclassdemo.X"); }catch(ClassNotFoundException e){ e.printStackTrace(); } c2 = new X().getClass(); //通過Object類中的方法執行個體化 c3 = X.class; //通過類.class執行個體化 System.out.println("類名稱:"+c1.getName()); System.out.println("類名稱:"+c2.getName()); System.out.println("類名稱:"+c3.getName()); }}
一旦可以執行個體化Class類之後,就可以進行反射的進一步操作。
總結:
1.瞭解Class 類的作用:反射的源頭
2.三Class類的執行個體化方式,其中要以"forName()"重點掌握,類.class