Java反射——调用运行时的类
2022/7/12 1:29:54
本文主要是介绍Java反射——调用运行时的类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.调用运行时类的属性
1 public static void testField() throws Exception { 2 Class clazz = Person.class; 3 //创建运行时类的对象 4 Person p = (Person) clazz.newInstance(); 5 //获取指定的公有(public)属性(使用情况少) 6 Field id = clazz.getField("id"); 7 /* 8 设置当前的属性值 9 set(参数1,参数2):参数1:指明设置哪个参数对象的属性,参数2:将此属性设置为多少 10 get(参数1): 11 */ 12 id.set(p,101); 13 int pId = (int) id.get(p); 14 System.out.println(pId + "——" + id); 15 }
1 public static void testField1() throws Exception { 2 Class clazz = Person.class; 3 Person p = (Person) clazz.newInstance(); 4 Field name = clazz.getDeclaredField("name"); 5 name.setAccessible(true); 6 name.set(p,"tom"); 7 System.out.println(name.get(p)); 8 }
2.调用运行时类的方法
1 public static void testMethod() throws Exception { 2 Class clazz = Person.class; 3 Person p = (Person) clazz.newInstance(); 4 /* 5 获取类的指定方法: 6 getDeclaredMethod():参数1:方法名 参数2:指明获取方法的参数列表 7 */ 8 Method show = clazz.getDeclaredMethod("show",String.class); 9 //保证当前方法可访问 10 show.setAccessible(true); 11 /* 12 调用方法的invoke():参数1即为方法的调用者 参数2:给方法形参赋值的实参 13 invoke()的返回值即为对应类中调用的返回值 14 */ 15 Object returnValue = show.invoke(p, "CHN");//p.show("CHN"); 16 System.out.println(returnValue); 17 18 //调用静态方法 19 Method desc = clazz.getDeclaredMethod("desc"); 20 desc.setAccessible(true); 21 //如果无返回值则得到null 22 Object invoke = desc.invoke(Person.class); 23 System.out.println(invoke); 24 }
3.调用运行时类的构造器
1 public static void testConstructor() throws Exception { 2 Class clazz = Person.class; 3 /* 4 获取指定的构造器 5 getDeclaredConstructor():参数,指明构造器的参数列表 6 */ 7 Constructor declaredConstructor = clazz.getDeclaredConstructor(String.class); 8 //保证构造器是可访问的 9 declaredConstructor.setAccessible(true); 10 //调用此构造器创建运行时类的对象 11 Person per = (Person) declaredConstructor.newInstance(); 12 System.out.println(per); 13 14 }
这篇关于Java反射——调用运行时的类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?