關(guān)于Java中的反射
? ? ? ? ? ? ??
反射概念
? 反射就是將一個(gè)類的class文件,封裝成一個(gè)對(duì)象
? 從class中獲取(解剖)類中的成員,并且運(yùn)行起來
?反射有關(guān)系的類
? java.langClass 封裝class文件的
? java.lang.reflect.Constructor 封裝構(gòu)造方法的
? java.lang.reflect.Field 封裝成員變量的
? java.lang.reflect.Method 封裝成員方法的
//以下所有代碼的演示都會(huì)使用此類
/*
?*
?* 用于反射演示的Person類
?*
?*/
public class Person {
?private String name;
?private int age;
?public String email;
?
?public Person(){System.out.println("空參賽構(gòu)造");}
?public Person(String name,int age){
? this.age = age;
? this.name = name;
? System.out.println("兩個(gè)參數(shù)構(gòu)造");
?}
?
?public Person(String name)
?{
? this.name = name;
? System.out.println("私有構(gòu)造");
?}
?
?//定義多個(gè)普通方法
?public void speak()
?{
? System.out.println("say");
?}
?public void show(int x)
?{
? System.out.println("一個(gè)人的x"+x);
?}
?public String toString()
?{
? return "Person " +name+"......"+age+"..."+email;
?}
// {
// System.out.println("構(gòu)造代碼要建對(duì)象,才運(yùn)行");
// }
//
// static{
// System.out.println("靜態(tài)代碼塊,加載類的時(shí)候運(yùn)行");
// }
}
//==================================================
2.獲取反射的三種方式
? 編譯后的class文件,對(duì)象的方式
? 描述類是Class,三種方式的返回值類型也是Class類型
A. 對(duì)象.getClass()
B. 類名.class
C. Class.forName()獲取
? 推薦使用:Class.forName方式獲取一個(gè)類的字節(jié)碼文件對(duì)象?靈活方便,你的類名可以通過字符串參數(shù)傳遞的
public class ReflectDemo {
?public static void main(String[] args) throws ClassNotFoundException {
?//第一種,通過對(duì)象獲取 Object類的方法 class