乐趣区

关于java:反射常用的方法

罕用办法

取得包名、类名

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(实例, 参数数据) ;// 让指定的实例来执行该办法

退出移动版