JAVA反射的一些例子

本文介绍了如何使用Java反射机制获取类信息、实例化对象、访问私有成员等高级操作。包括获取类名、父类、构造方法、成员方法及属性,并通过实例演示了动态调用方法的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于JAVA反射的一些例子,可以看下





/通过类的名字的字符串表达形式,获取到类这个对象。1
//类的完整名称为:所在包的包名+自己定义的名称
Class cls = Class.forName("extension.Person");

//得到指定的包名
String packageName = cls.getPackage().getName();
System.out.println("得到包名:" + packageName);
//获取其父类
Class superCls = cls.getSuperclass();
String superClsName = superCls.getName();
System.out.println("Person类的父类:" + superClsName);

//获取其实现的构造方法
Constructor[] constructors = cls.getConstructors();
System.out.println("Person类实现的构造方法:" + Arrays.toString(constructors));
//获取其成员方法
Method[] methods = cls.getMethods();
System.out.println("Person中的成员方法:" + Arrays.toString(methods));
//得到方法的返回类型
Class returnType = methods[1].getReturnType();
System.out.println("getName方法的返回类型:" + returnType);
//通过反射的类,实例化该类的对象
Person person = (Person) cls.newInstance();
Field nameField = cls.getDeclaredField("name");
//解除封装,如果没有这句话,则会抛出异常
nameField.setAccessible(true);
nameField.set(person, "小明");
//打印该属性的值
System.out.println("Person类中Name属性的值是:" + nameField.get(person));
//利用反射动态的调用方法
Method getNameMethod = cls.getDeclaredMethod("getName");
getNameMethod.setAccessible(true);
String name = (String) getNameMethod.invoke(person);
System.out.println("调用getName方法得到:" + name);
Method setSexMethod = cls.getDeclaredMethod("setSex", String.class);
setSexMethod.setAccessible(true);
setSexMethod.invoke(person, "男");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值