利用反射机制动态加载类 、获取类的方法、获取类的属性
编译时刻加载类是静态加载类,运行时加载类是动态加载类
正常创建对象 静态:
A a = new A();
利用反射创建对象 动态:
A类实现X接口
Class c1 = Class.forName(“xxx.A”);
X a = (X) c1.newInstence();
Class c = Class.forName(“xxx.xxx”);
c.getName();//类名称(基本的数据类型 void关键字都存在类类型 无包名)
c.getNAme();//不带包名的类名称
java.lang.reflect.Method //方法对象
Method[] ms = c.getMethods();// 获取的是所有public的函数,包括从父类继承的
Method[] ms = c.getDeclaredMethods();//获取该类所有自己声明的方法 不问访问权限
ms[i].getName();//获取方法名
Class returntype = ms[i].getReturnType();//获取返回值类型的类类型
Class[] paramTypes = ms[i].getParameterTypes();//获取参数列表类型的类类型
java.lang.reflect.Field //成员变量对象
Field[] fs = c.getFields(); //所有public的成员变量
c.getDeclaredFields();//获取所有自己声明的成员变量
Class fieldType = fs[i].getType();//成员变量类型的类类型,通过它可以获取其类型相关信息
java.lang.reflect.Constructor //构造函数的对象
Constructor[] cs = c.getConstrunctors();//获取public构造方法
c.getDeclaredConstructors();//获取自己声明的全部构造方法
获取Class的对象,即类类型后,就可以获取很多信息了,比如说父类,接口等,参考API。