-
获取成员变量们:
Field | getField(String name)
返回一个 |
获取指定的Class类对象中的成员变量 【public修饰】 |
Field[] | getFields()
返回包含一个数组 |
获取所有Class类对象中public修饰的所有成员变量【public修饰】 |
Field | getDeclaredField(String name)
返回一个 |
获取指定的Class类对象中的成员变量 【不考虑修饰符,但要做暴力反射处理】 |
Field[] | getDeclaredFields()
返回的数组 |
获取指定的Class类对象中的所有成员变量 【不考虑修饰符,但要做暴力反射处理】 |
获取指定public修饰的成员变量
public static void main(String[] args) throws Exception {
// 获取Class类对象
Class classPerson = Person.class;
// 通过Class类对象 获取成员变量
Field field = classPerson.getField("address");
// 实例化Person对象
Person person = new Person();
// 设置值
field.set(person,"中国");
String value = (String) field.get(person);
System.out.println(value);
}
getFields()方法:
获取public修饰的Class对象的成员变量们。【其中Field.get()方法:获取值,同样也有Field.set()方法】
public class Test {
public static void main(String[] args) throws Exception {
// 获取Class类对象
Class classPerson = Person.class;
// 通过Class类对象 获取成员变量
Field[] fields = classPerson.getFields();
// 实例化一个Person对象
Person person = new Person();
// 遍历Class对象的成员变量
for (Field field : fields){
System.out.println(field);
// 获取Class类对象的成员变量的值
String value = (String) field.get(person);
System.out.println(value);
}
}
}
以下这两个方法可以获取所有Class类对象的成员变量
【不考虑修饰符,包括私有成员变量,但是要忽略访问修饰符的安全监测,即暴力反射处理】
// 暴力反射
field.setAccessible(true);
getDeclaredField(String name)方法:
getDeclaredFields()方法:
-
获取构造方法们:
Constructor<T> | getConstructor(类<?>... parameterTypes)
返回一个 |
Constructor<?>[] | getConstructors()
返回包含一个数组 |
Constructor<T> | getDeclaredConstructor(类<?>... parameterTypes)
返回一个 |
Constructor<?>[] | getDeclaredConstructors()
返回一个反映 |
getConstructor(类<?>... parameterTypes)方法;
【注:该方法的参数为构造方法对应的参数】
获取Class类对象的构造方法;【注意:获取的这个构造方法是一个对象】
public static void main(String[] args) throws Exception {
// 获取Class类对象
Class personClass = Person.class;
// 获取Class对象的构造方法
Constructor constructor = personClass.getConstructor(int.class,String.class);
// 同过constructor实例化一个person对象
Person person = (Person) constructor.newInstance(11,"张三");
// 输出person内容
System.out.println(person.getId()+","+person.getName());
}
【注:其他方法类似的都与上面介绍一致,自行理解一下】
-
获取成员方法们:
Method | getMethod(String name, 类<?>... parameterTypes)
返回一个 |
Method[] | getMethods()
返回包含一个数组 |
Method | getDeclaredMethod(String name, 类<?>... parameterTypes)
返回一个 |
Method[] | getDeclaredMethods()
返回包含一个数组 |
获取Class类对象的成员方法 【注:成员方法为一个对象】
无参方法代码示例:
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws Exception {
// 获取Class类对象
Class personClass = Person.class;
// 实例化一个Person对象
Person person = new Person();
// 获取Class对象的成员方法对象
Method method = personClass.getMethod("Eat");
// 执行方法
method.invoke(person);
}
}
有参方法代码示例:
public class Test {
public static void main(String[] args) throws Exception {
// 获取Class类对象
Class personClass = Person.class;
// 实例化一个Person对象
Person person = new Person();
// 获取Class对象的成员方法对象
Method method = personClass.getMethod("Eat",String.class);
// 执行方法
method.invoke(person,"宫爆鸡丁");
}
}
-
获取类名:
String | getName()
返回由 |