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);