一、獲取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
}