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