JAVA之反射學習1-如何獲取Class物件

qq_42265608發表於2020-12-01

注意:這裡的Class物件,指的並不是該類的例項化物件,而是該類所對應的位元組碼檔案物件,而該類的物件是用位元組碼檔案物件運用構造方法的例項化物件。

  1. 獲取Class物件的方法
    1.使用類的class屬性獲取該類對應的Class物件。
    2.呼叫物件的getClass()方法,返回該物件所屬的Class物件
    3.使用Class類中的靜態方法forName(String className),字串的值為類的全路徑,即完整報名的路徑
package com.itheima_02;

/*
    三種方式獲取Class物件
        1:使用類的class屬性來獲取該類對應的Class物件。舉例:Student.class將會返回Student類對應的Class物件
        2:呼叫物件的getClass()方法,返回該物件所屬類對應的Class物件
            該方法是Object類中的方法,所有的Java物件都可以呼叫該方法
        3:使用Class類中的靜態方法forName(String className),該方法需要傳入字串引數,該字串引數的值是某個類的全路徑,也就是完整包名的路徑
 */
public class ReflectDemo {
    public static void main(String[] args) throws ClassNotFoundException {
        //使用類的class屬性來獲取該類對應的Class物件,最方便
        Class<Student> c1 = Student.class;
        System.out.println(c1);

        Class<Student> c2 = Student.class;
        System.out.println(c1 == c2);
        System.out.println("--------");

        //呼叫物件的getClass()方法,返回該物件所屬類對應的Class物件
        Student s = new Student();
        Class<? extends Student> c3 = s.getClass();
        System.out.println(c1 == c3);
        System.out.println("--------");

        //使用Class類中的靜態方法forName(String className),可以將這個字串的資料配置到一個配置檔案中,可以隨時修改內容,靈活性更高
        Class<?> c4 = Class.forName("com.itheima_02.Student");
        System.out.println(c1 == c4);
    }
}

相關文章