JAVA-Reflect 專題
①Class類的使用
②方法的反射
③成員變量的反射
④構造函數的反射
⑤java類的加載機制
Ⅰ在面向對象的世界裡,萬事萬物皆為對象
類是對象,類是java.lang.Class類的實例對象
ⅡClass類的實例對象有三種表示方式
//第一種表達方式(已知類名)
//第二種表達方式(已知對象)
//第三種表達方式(通過類全稱)
package com.tsh.reflect; public class ReflectDemo { public static void main(String[] args) { Foo foo1=new Foo(); //Class類的實例對象 //第一種表達方式(已知類名) Class c1=Foo.class; //第二種表達方式(已知對象) Class c2=foo1.getClass(); //第三種表達方式(通過類全稱) Class c3=null; try { c3=Class.forName("com.tsh.reflect.Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } //官網解釋:c1和c2表示了Foo類的類類型(class type) //一個類只可能是Class類的一個對象,因此下面的輸出true System.out.println(c1==c2); //可以通過類的類類型創建該類的實例對象 try { //該類需要有無參數的構造方法 Foo foo2=(Foo) c1.newInstance(); foo2.print(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } class Foo{ void print(){ System.out.println("test"); } }