中医院网站建设方案,wordpress写文章怎么添加图片,管理网站 开发,网站域名怎么做解析反射机制
之前学过一部分#xff0c;笔记在20250103Java包_网络编程.md里,这里在之前的笔记的基础上做一些补充。 反射#xff1a;得到class对象后反向获取对象的各种信息。 包 Field 类或接口中的字段(成员变量)#xff0c;动态访问和修改类的字段 模板 获取Class 对象 …反射机制
之前学过一部分笔记在20250103Java包_网络编程.md里,这里在之前的笔记的基础上做一些补充。 反射得到class对象后反向获取对象的各种信息。 包 Field 类或接口中的字段(成员变量)动态访问和修改类的字段 模板 获取Class 对象 .forName Class? clazz Class.forName(“ReflectClass”); 获取 用Class类获取方法 获取构造方法**.getConstructor** Constructor? constructor clazz.getConstructor(Class1.class, Class2.class);获取成员方法**.getMethod** Method method clazz.getMethod(“methodName”, ParamType1.class, ParamType2.class); 用Filed获取静态属性例如成员变量属性 .getField Field staticField clazz.getField(“staticFieldName”); 查询或修改 构造方法实例化 .newInstance( ); Object instance constructor.newInstance(arg1, arg2);设置成员变量值 set(instance,“UP”); field.set(instance, value);调用成员方法 invoke(instance,“reflect”); Object result method.invoke(instance, arg1, arg2);获取静态属性 .get Object staticFieldValue staticField.get(null);
模板
import java.lang.reflect.*;public class ReflectionTemplate {public static void main(String[] args) throws Exception {// 1. 获取 Class 对象Class? clazz Class.forName(YourClassName); // 替换为实际类名// 2. 获取构造方法并实例化对象Constructor? constructor clazz.getConstructor(Class1.class, Class2.class); // 替换参数类型Object instance constructor.newInstance(arg1, arg2); // 替换实际参数// 3. 获取静态属性Field staticField clazz.getField(staticFieldName); // 替换字段名Object staticFieldValue staticField.get(null); // 获取静态属性值null 表示静态字段// 4. 设置成员变量值Field field clazz.getField(fieldName); // 替换字段名field.set(instance, value); // 设置对象字段值// 5. 获取成员方法并调用Method method clazz.getMethod(methodName, ParamType1.class, ParamType2.class); // 替换方法名和参数类型Object result method.invoke(instance, arg1, arg2); // 替换实际参数}
}
反射能做什么 动态加载类和实例化对象 动态调用方法 操作(修改和访问)字段 序列化与反序列化 序列化将对象的状态转换为可存储或传输的字节流反序列化,从字节流恢复对象在反序列化过程中可以帮助实例化对象即使我们不知道类