本文共 2223 字,大约阅读时间需要 7 分钟。
1.1.1 反射public成员变量(字段)
通过反射运行public变量流程package com.itheima_01;
import java.lang.reflect.Field;
/*
通过反射获取成员变量并使用
Field[] getFields()
Field getField(String name)
Field[] getDeclaredFields()
Field getDeclaredField(String name)
Field:
Object get(Object obj)
void set(Object obj, Object value)
*/
public class ReflectDemo3 {
public static void main(String[] args) throws ReflectiveOperationException {
//获取学生类的字节码对象
Class clazz = Class.forName("com.itheima_01.Student");
//获取学生类的对象
Object stu = clazz.newInstance();
//Field getField(String name) :根据字段名称获取公共的字段对象
Field f = clazz.getField("age");//获取成员变量对象
//System.out.println(f);
//void set(Object obj, Object value)
f.set(stu,28);//通过成员变量对象,修改指定对为指定的值
//Object get(Object obj)
Object age = f.get(stu);//通过对象获取成员变量的值
System.out.println(age);
System.out.println(stu);
}
private static void method(Class clazz) {
//Field[] getFields() :获取公共的成员变量
Field[] fs = clazz.getFields();
for (int i = 0; i < fs.length; i++) {
System.out.println(fs);
}
System.out.println("----------");
//getDeclaredFields() :获取所有的成员变量
Field[] fs2 = clazz.getDeclaredFields();
for (int i = 0; i < fs2.length; i++) {
System.out.println(fs2);
}
}
}
1.1.3 方法总结 通过反射获取成员变量并使用 Field[] getFields() --> 返回该类所有(公共)的字段 Field getField(String name) --> 返回指定名称字段 Field[] getDeclaredFields() --> 暴力反射获取所有字段(包括私有) Field getDeclaredField(String name) --> 暴力反射获取指定名称字段 ---------------马上讲----------------- Field: Object get(Object obj) --> Field对象调用, 返回传入对象的具体字段 void set(Object obj, Object value) --> Field对象调用 参数1: 要修改的对象 参数2: 将此对象的字段修改为什么值.
转载于:https://blog.51cto.com/13587708/2372988