首先,确认一条准则,java中万物皆为对象,我们创建的每个类也不例外,所有类都是Class类(全称java.lang.class)的实例对象,但它们不用new创建,因为Class类的构造方法是私有的。
好的,现在开始咬文嚼字。
每个类都有一个类类型(很拗口是不是。。理解为类的class,即类类型)即class属性,这个属性包含此类的重要信息,例如方法、属性等。
如何获取类类型?
1. Class c1= A.class
2. Class c2= a1.getClass //a1是A的实例
3. Class c3= Class.forName("类的全称")
备注: 类类型是一个类,也是一个对象
如何构建类类型获取该类实例?
A a2= (A)c1.newInstance()
即先创建一个类类型实例,再进行一次强制性类型转换
类类型的常用操作
publicstaticvoid printClassMessage(Object obj){ Class c = obj.getClass(); //获取类的名称 System.out.println("累的名称是:"+c.getName()); //一个成员方法就是一个Method对象 //getMethods()方法获取的是所有的public的函数,包括父类继承而来的 //getDeclaredMethods()获取的是多有该类自己声明的方法,不问访问权限 Method[] ms = c.getMethods(); for(int i =0; i < ms.length; i++){ //得到方法的返回值类型的类类型 Class retrunType = ms[i].getReturnType(); System.out.print(retrunType.getName()+" "); //得到方法的名称 System.out.print(ms[i].getName()+"(");
//获取的参数类型--->得到的是参数列表的类型的类类型 Class[] paraTypes = ms[i].getParameterTypes(); for(Class class1 : paraTypes){ System.out.print(class1.getName()+","); } System.out.println(")"); } }
接下来说一下什么是反射
定义: JAVA反射指的是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。