共计 901 个字符,预计需要花费 3 分钟才能阅读完成。
罕用办法
取得包名、类名
clazz.getPackage().getName()// 包名
clazz.getSimpleName()// 类名
clazz.getName()// 残缺类名
!!成员变量定义信息
getFields()// 取得所有公开的成员变量,包含继承的变量
getDeclaredFields()// 取得本类定义的成员变量,包含公有, 不包含继承的变量
getField(变量名)
getDeclaredField(变量名)
!!构造方法定义信息
getConstructor(参数类型列表)// 取得公开的构造方法
getConstructors()// 取得所有公开的构造方法
getDeclaredConstructors()// 取得所有构造方法,包含公有
getDeclaredConstructor(int.class, String.class)
办法定义信息
getMethods()// 取得所有可见的办法,包含继承的办法
getMethod(办法名, 参数类型列表)
getDeclaredMethods()// 取得本类定义的办法,包含公有, 不包含继承的办法
getDeclaredMethod(办法名, int.class, String.class)
反射新建实例
c.newInstance();// 执行无参结构
c.newInstance(6, “abc”);// 执行有参结构
c.getConstructor(int.class, String.class); // 执行含参结构,获取构造方法
反射调用成员变量
c.getDeclaredField(变量名); // 获取变量
c.setAccessible(true); // 使公有成员容许拜访
f.set(实例, 值); // 为指定实例的变量赋值,动态变量,第一参数给 null
f.get(实例); // 拜访指定实例的变量的值,动态变量,第一参数给 null
反射调用成员办法
获取办法
Method m = c.getDeclaredMethod(办法名, 参数类型列表);
m.setAccessible(true) ;// 使公有办法容许被调用
m.invoke(实例, 参数数据) ;// 让指定的实例来执行该办法