java反射专题三

一丶调用运行时类中指定的属性

复制代码
       Class clazz = Person.class;
       //1.获取指定的属性
       Field name = clazz.getField("name");//获取运行时类及其父类中声明public的指定名为name的属性
       //2.创建运行时类的对象
       Person person = (Person) clazz.newInstance();
       //3.将运行时类的指定属性赋值
       name.set(person, "Jerry");
       Field age = clazz.getDeclaredField("age");//可以获取运行时类中指定名为age的属性
       age.setAccessible(true);//由于属性权限修饰符的限制,为了保证可以给属性赋值,需要在设置属性前使得有权限操作该属性
       age.set(person, 11);
复制代码

二丶调用运行时类中指定的方法

复制代码
       Class clazz = Person.class;
       //1.获取运行时类中声明public的指定的方法
       Method method = clazz.getMethod("display", String.class);//有一个String类型的形参,第二个参数是变长参数,如果没有形参就不写
       Person person = (Person) clazz.newInstance();
       Object returnVal = method.invoke(person, "hello");//返回值就对应到具体调用方法的返回值
       //2.获取运行时类中指定的方法
       Method m = clazz.getDeclaredMethod("show");
       m.setAccessible(true);//和属性一个意思
       m.invoke(person);
       //3.获得静态的方法
       Method m3 = clazz.getMethod("info");
       m3.invoke(Person.class);//对于静态方法的掉用
复制代码

 三丶调用指定的构造器

       Class clazz = Person.class;
       //获取运行时类中指定的构造器
       Constructor c = clazz.getDeclaredConstructor(String.class,int.class);
       c.setAccessible(true);
       Person p = (Person)c.newInstance("Tom",20);//通过指定构造器创建对象

 

posted @   迷走神经  阅读(267)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示