反射——獲取對象Class實例的四種方式——萬物皆對象

 一、獲取class對象實例的方式(前三種方式需要掌握)

 

 
    @Test
    public void test3() throws ClassNotFoundException {
        
//方式一:調用運行時類的屬性:.class   
        Class clazz1 = Person.class;  //Person爲自定義類
        System.out.println(clazz1);


       
 //方式二:通過運行時類的對象,調用getClass()
        Person p1 = new Person();
        Class clazz2 = p1.getClass();
        System.out.println(clazz2);

        
//方式三:調用Class的靜態方法:forName(String classPath)
        Class clazz3 = Class.forName("com.luoyang.java.Person");
        // clazz3 = Class.forName("java.lang.String");
        System.out.println(clazz3);

        System.out.println(clazz1 == clazz2);//true
        System.out.println(clazz1 == clazz3);//true

        
//方式四:使用類的加載器:ClassLoader  (瞭解)
        ClassLoader classLoader = ReflectionTest.class.getClassLoader();
        Class clazz4 = classLoader.loadClass("com.luoyang.java.Person");
        System.out.println(clazz4);

        System.out.println(clazz1 == clazz4);//true

    }

 

 二、萬物皆對象。

 

(1)class: 外部類,內部類,匿名類。

(2)interface: 接口

(3)[] : 數組

(4)enum:枚舉

(5)annotation:註解

(6)primitive type : 基本數據類型

(7)void 
 

    //Class 對象實例可以是哪些結構的說明:
    @Test
    public void test4(){
        Class c1 = Object.class;
        Class c2 = Comparable.class;
        Class c3 = String[].class;
        Class c4 = int[][].class;
        Class c5 = ElementType.class;
        Class c6 = Override.class;
        Class c7 = int.class;
        Class c8 = void.class;
        Class c9 = Class.class;

        int[] a = new int[10];
        int[] b = new int[100];
        Class c10 = a.getClass();
        Class c11 = b.getClass();

        System.out.println(c10);//class [I
        // 只要數組的元素類型與維度一樣,就是同一個Class
        System.out.println(c10 == c11); //true
        
    }

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章