反射获取类类型Class Type的三种方法
Class<?> class1=对象.getClass();
Class<?> class2=类.class;
Class<?> class3=Class.forName("类")
(红色为重点掌握的方法)
反射实例化对象
Class<T>.newInstance()获取T类的对象
Class类常用方法:
getInterfaces()获取类实现的接口,getSuperclass()获取类继承的父类
getName()获取类的全名,getSimpleName()获取类的类名,不含包名,getPackage()获取类的包
isEnum()类是否是枚举,isInterface()是否是接口,isArray()是否是数组
反射获取构造方法
getConstructors(),getConstructor(parameterType)反射获取构造方法类
Constructor类常用方法
getName()获取构造名,getModifiers()获取修饰符(返回int型),getExceptionTypes()获取构造方法上抛出的异常类型
getParameterCount()获取构造方法中的参数数量,getParameterTypes()获取构造方法中的参数的类型
Constructor<T>类实例化T类的对象(使用该构造方法):
Constructor<T>.newInstance(params);
反射获取类中的方法
getMethods(),getMethod(name,parameterType)反射获取方法
Method类常用方法
getModifiers()获取修饰符,getReturnType()获取返回值类型
获取参数数量,获取参数类型,获取该方法中抛出异常的类型,和上面的Constructor类中用法一样
Method类执行:
Method.invoke(params) ;
反射获取成员(变量,常亮)
getDeclaredFields(),getDeclaredField(name)反射获取本类声明的成员
getFields(),getField(name)反射获取本类继承父类的全部成员(父类private成员无法获取,得public成员)
Filed类常用方法
getType()获取成员类型
get(Object object)获取成员的值,set(Object object,value)设置成员的值
(如果操作的是private类型的成员要先解除封装 Field.setAccessible(true))