
1.由于Class類沒有公共構造方法,所有創建Class的對象的方法有以下幾種:
①通過Class.forName()靜態方法返回Class類的一個實例
Class cls = Class.forName("test.dog - 這個網站可出售。 - 最佳的test 來源和相關信息。");
②通過類名.class來獲取一個Class類的實例
cls = Dog.class;
③代碼運行在非靜態區,通過this.getClass()獲取Class類的一個實例
Class cls = this.getClass();
2.Class對象既然是描述一個類,那么我們通過該Class的實例能夠做什么事情呢?
//類的屬性
//獲取類名
System.out.println(cls.getName());
System.out.println(cls.getSimpleName());
//獲取類的修飾限定符
int modi = cls.getModifiers();
System.out.println(modi);
//獲取一個類的屬性
//根據一個屬性名獲取一個public屬性的描述
Field field = cls.getField("name");
//獲取一個類的全部public屬性的描述
Field[] fields = cls.getFields();
System.out.println(fields.length);
//根據一個屬性名獲取一個在類中聲明的屬性的描述
Field declaredField = cls.getDeclaredField("gender");
//獲取所有在類中聲明的屬性的描述
Field[] declaredFields = cls.getDeclaredFields();
//獲取一個類的方法
//根據一個方法的名字獲取類中的一個public的方法的描述
Method method = cls.getMethod("run", String.class,int.class);
//獲取所有在類中是public的方法的描述
Method[] methods = cls.getMethods();
//根據一個方法名獲取在類中聲明的一個方法的描述
Method declaredMethod = cls.getDeclaredMethod("eat", null);
//獲取所有在類中聲明的方法的描述
Method[] declaredMethods = cls.getDeclaredMethods();
//返回cls所代表的類的實例
Object obj = cls.newInstance();
System.out.println(obj);