反射-class对象功能概述和获取Field功能
2022/7/23 23:26:37
本文主要是介绍反射-class对象功能概述和获取Field功能,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
class对象功能概述
获取功能:
1.获取成员变量们
- Fileld[] getFields()
- Fileld getFileld(String name).
- Fileld[] getDeclaredFilds()
- Filed getDeclaredField(String name)
2.获取构造方法们
- Constructor<?>[] getConstructors()
- Constructor<T> getConstructor(类<?>... parameterTypes)
- Constructor<T> getDeclaredConstrutor(类<?>... parameterTypes)
- Constructor<?> getDeclaredConstructors()
3.获取成员方法们
- Method[] getMethods()
- Method getMethod(String name,类<?>... parameterTypes)
- Method[] getDeclaredMethods()
- Method getDeckaredMethod(String name,类<?>... paramterTypes)
4.获取类名
- String getName()
获取Field功能
获取Field
- Fileld[] getFields() 获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加
- Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加
- Fileld[] getDeclaredFilds()获取所有成员变量
- Filed getDeclaredField(String name)获取指定成员变量
- a.setAccessible(boolean flay);忽略修饰符的安全检查 俗称暴力反射
代码:
public class ReflectDemo02 { public static void main(String[] args) throws Exception { //1.获取Person的Class对象 Class personClass = Person.class; /* Fileld[] getFields() 获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 */ //Fileld[] getFields()获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 Field[] fields = personClass.getFields(); for (Field field : fields) { System.out.println(field); } System.out.println("---------------------"); //Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加 Field age = personClass.getField("age"); //获取成员变量age的值 Person p = new Person(); Object o = age.get(p); System.out.println(o); //设置成员变量age的值 age.set(p, 10); //获取成员变量age的值 o = age.get(p); System.out.println(o); System.out.println("--------------------------"); /* Fileld[] getDeclaredFilds() Filed getDeclaredField(String name) */ //Fileld[] getDeclaredFilds() Field[] fields1 = personClass.getDeclaredFields(); for (Field field : fields1) { System.out.println(field); } System.out.println("----------------------------"); //Filed getDeclaredField(String name) Field a = personClass.getDeclaredField("a"); //在获取不是public的成员变量时 需要忽略修饰符的安全检查 a.setAccessible(true);//这种我们称为 暴力反射 //获取成员变量age的值 Object o1 = a.get(p); System.out.println(o1); }
运行结果:
这篇关于反射-class对象功能概述和获取Field功能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!
- 2024-05-08今天开始程序员不用再发愁写commit message了,全部由CodeGeeX自动完成!