反射之------获得运行时类的指定属性及其赋值和获取属性值的操作
package com.heima.userJSTL; import java.lang.reflect.Field; public class GetFiledTheOne { public static void main(String[] args) throws Exception { /* //获取运行时类的指定属性并且进行复制和获取属性值的操作 //方法1(此方法只能获得被public修饰的属性,所以在实际开发中不太常用) Class<Person> aClass = Person.class; Field name = aClass.getField("name");//获得了当前运行时类的实例属性 //赋值 //因为是实例属性,所以我们需要提前穿件一个对象对这个对象进行该属性的赋值 //创建对象 Person person = aClass.newInstance(); //对person对象的name属性进行复制 name.set(person,"张三");//对person对象的name属性赋值张三 Object o = name.get(person);//获得person对象的name属性 System.out.println(o);*/ //方法2(在开发中我们一般使用方法2) Class<Person> aClass = Person.class; /* Field age = aClass.getDeclaredField("age");//age属性是被private修饰的 //创建当前运行时类的对象 Person person = aClass.newInstance(); age.setAccessible(true);//暴力反射,设置当前属性是可以被访问(赋值和修改)的 //对age进行赋值,但是赋值之前需要进行暴力反射操作 age.set(person, 23); Object o = age.get(person); System.out.println(o);*/ //获取类属性 Field aaa = aClass.getDeclaredField("aaa"); aaa.setAccessible(true);//暴力反射 aaa.set(null,23); Object o1 = aaa.get(null); System.out.println(o1); } }
迎风少年
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在 .NET 中使用内存映射文件构建高性能的进程间通信队列
· 一个 java 空指针异常的解决过程
· 揭开 SQL Server 和 PostgreSQL 填充因子的神秘面纱
· 没有调度器的协程不是好协程,零基础深入浅出 C++20 协程
· 别做抢活的导演:代码中的抽象层次原则
· 今年失业的程序员兄弟姐妹们,你们都去干什么了?
· TinyEditor v4.0 alpha 版本发布:表格更强大,表情更丰富,上传体验超乎想象!
· .NET周刊【7月第2期 2025-07-13】
· 圆方树学习笔记 —— 一种关于点双连通分量的思考方式
· MySQL 17 如何正确地显示随机消息?