Class对象功能概述
1、获取成员变量们:
Field[] getFields():获取所有public修饰的成员变量
Field getField(String name):获取指定名称的 public修饰的成员变量
Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符
Field getDeclaredField(String name)
Field:成员变量
操作:
1、设置值
void set(Object obj,Object value)
2、获取值
get(Object obj)
3、忽略访问权限修饰符的安全检查
setAccessible(true):暴力反射
2、获取构造方法们:
Constructor<?>[] getConstructors()
Constructor<T> getConstructor(Class<?>... parameterTypes)
Constructor<?>[] getDeclaredConstructors()
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
Constructor构造方法
创建对象:
T newInstance(Object... initargs)
如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
忽略访问权限修饰符的安全检查 setAccessible(true):暴力反射
3、获取成员方法们:
Method[] getMethods()
Method getMethod(String name, Class<?>... parameterTypes)
Method[] getDeclaredMethods()
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
Method :方法对象:
执行方法:
Object invoke(Object obj,Object... args)
获取方法名称:
String getName:获取方法名
4、获取类名:
String getName()
Class对象功能-获取Field
Field[] getFields() :获取所有public修饰的成员变量
Field getField(String name):获取指定名称的public修饰的成员变量
Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符
Field getDeclaredField(String name):获取指定名称的修饰的成员变量,不考虑修饰符
操作:
设置值:
void set(Object obj,Object value)
获取值:
get(Object obj)
忽略访问权限修饰符的安全检查:
setAccessible(true):暴力反射
public class Person { private String name; private int age; public String a; protected String b; String c; private String d; public Person() { } public Person(String name, int age, String a) { this.name = name; this.age = age; this.a = a; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", a='" + a + '\'' + ", b='" + b + '\'' + ", c='" + c + '\'' + ", d='" + d + '\'' + '}'; } public String getD() { return d; } public void setD(String d) { this.d = d; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getA() { return a; } public void setA(String a) { this.a = a; } }
public class demo02 { public static void main(String[] args) throws Exception { /* 1、获取成员变量们: Field[] getFields():获取所有public修饰的成员变量 Field getField(String name):获取指定名称的 public修饰的成员变量 Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符 Field getDeclaredField(String name) Field:成员变量 操作: 1、设置值 void set(Object obj,Object value) 2、获取值 get(Object obj) 3、忽略访问权限修饰符的安全检查 setAccessible(true):暴力反射 */ //0.获取Person的Class对象 Class<Person> personClass = Person.class; //1.Field[] getFields():获取所有public修饰的成员变量 Field[] fields = personClass.getFields(); for (Field field : fields) { System.out.println(field); } System.out.println("============"); //2.Field getField(String name):获取指定名称的 public修饰的成员变量 Field a = personClass.getDeclaredField("a"); //创建对象 Person p = new Person(); //获取值 Object value = a.get(p); //修改值 a.set(p,"张三"); System.out.println(p); System.out.println("============="); //3.Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符 Field[] declaredFields = personClass.getDeclaredFields(); for (Field declaredField : declaredFields) { System.out.println(declaredField); } //4.Field getDeclaredField(String name):获取指定名称的 不考虑修饰符 Field d = personClass.getDeclaredField("d"); //忽略访问权限修饰符的安全检查 d.setAccessible(true); Object value2 = d.get(p); d.set(p,"小强"); System.out.println(p); } }
运行结果:
标签:name,获取,Object,Class,Field,概述,public,String From: https://www.cnblogs.com/qihaokuan/p/16624936.html