反射_Class对象功能概述和反射_Class对象功能_获取Fileld
反射_Class对象功能概述
Class对象功能:
>获取功能:
1.获取成员变量们:
>Field[] getFields(): 获取所有public修饰的成员变量
>Field getField(String name):获取指定名称的public修饰符的成员变量
>Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符
>Field getDeclaredField(String name):获取所有的指定名称的成员变量,不考虑修饰符
2.获取构造方法们:
>Constructor<?>[] getConstructors()
>Constructor<T> getConstructor(类<?>...parameterTypes)
>Constructor<?>[] getDeclaredConstructors()
>Constructor<T> getDeclaredConstructor(类<?>...parameterTypes)
3.获取成员方法们:
>Method[] getMethods()
>Method getMethod(String name, 类<?>... parameterTypes)
>Method[] getMethods()
>Method getMethod(String name, 类<?>... parameterTypes)
4.获取类名:
>String getName()
反射_Class对象功能_获取Fileld
Field:成员变量
>操作:
1.设置值
>void set(Object obj,Object value)
2.获取值
>get(Object obj)
3.忽略访问权限修饰符的安全检查
>setAccessible(true):暴力反射
public static void main(String[] args) throws Exception { Class per = Person.class; //Field[] getFields() Field[] fields = per.getFields(); for (Field field : fields) { System.out.println(field); } System.out.println("========="); //Field getField(String name) Field a = per.getField("a"); //获取成员变量a的值 Person p = new Person(); Object value = a.get(p); System.out.println(value); //设置a的值 a.set(p,"张三"); System.out.println(p); System.out.println("=================="); //Field[] getDeclaredFields() Field[] declaredFields = per.getDeclaredFields(); for (Field declaredField : declaredFields) { System.out.println(declaredField); } //Field getDeclaredField(String name) Field d = per.getDeclaredField("d"); //忽略访问权限修饰符的安全检查 d.setAccessible(true); Object value2 = d.get(p); System.out.println(value2); }