反射獲取Class對象的三種方式


import cn.qujianlei.domain.Person;

public class ReflectDemo {

    public static void main(String[] args) throws ClassNotFoundException {

        /*
         * 
         * 反射技術:動態的獲取類以及類中的成員,並可以調用該類的成員。
         * 以前有什么類就new什么對象。
         * 現在沒有類,給什么類就new什么對象。
         * 
         * 
         * 反射技術的出現提高了程序的擴展性
         * 反射技術中最重要的一點:先獲取到那個類。
         * 如何獲取類呢?
         * 
         * 無論new什么對象,都需要先獲取字節碼文件
         * 如何獲取呢?發現java已對字節碼文件進行了描述用Class類完成的
         * 
         * 如何獲取一個字節碼文件的對象呢?
         * 
         * 方式一:Object getClass()方法,發現在反射技術里,該方法不合適,反射技術中不明確具體類
         * 
         * 方式二:所有的數據類型都由自己對應的class對象,表示方法很簡單
         * 每一個數據類型都由一個默認的靜態屬性。.class用該屬性就可以獲取到字節碼文件對象
         * 雖然不用對象調用,但還是要用具體的類調用靜態屬性。
         * 
         * 方式三:在Class類中找到了forName方法,通過名稱就可以獲取對應的字節碼文件對象
         * 重點!!!!!
         * 
         */
        
//        methodDemo_1();
        
//        methodDemo_2();
        
        methodDemo_3();
        
        
    }
    
    public static void methodDemo_3() throws ClassNotFoundException {
        
        String className = "cn.qujianlei.domain.Person";
        
        Class clazz = Class.forName(className);
        
        System.out.println(clazz);
        
    }

    public static void methodDemo_2() {
        
        Class clazz = Person.class;
        Class clazz2 = Person.class;
        System.out.println(clazz==clazz2);
        
    }

    //獲取Class對象的方式一
    public static void methodDemo_1(){
        
        //調用getClass先有對象
        Person p1 = new Person();
        Class c1 = p1.getClass(); 
        
        Person p2 = new Person();
        Class c2 = p2.getClass(); 
        
        System.out.println(c1==c2);
        
        
    }
    

}

 

public class Person {
        
    private String name;
    private int age;
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    
    public Person() {
        super();
        System.out.println("person run");
        
    }
    
    public void show(){
        System.out.println("person show run");
    }
    
    public static void staticShow(){
        System.out.println("person static show run");
    }
    
    public void paramShow(String name,int age){
        System.out.println("show:"+name+"---"+age);
    }
    
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM