Java开发笔记(八十)利用反射技术操作私有方法

本文详细讲解了如何使用Java反射技术调用私有方法,包括无输入参数和有输入参数的情况。通过示例展示了如何反射调用私有方法`getName`和`setName`,并提供了设置和获取性别方法的反射代码。最后,给出了实际调用这些反射方法的代码示例。
摘要由CSDN通过智能技术生成

前面介绍了如何利用反射技术读写私有属性,不单是私有属性,就连私有方法也能通过反射技术来调用。为了演示反射的逆天功能,首先给Chicken鸡类增加下列几个私有方法,简单起见弄来了set***/get***这样的基本方法:

private void setName(String name) { // 设置名称
	this.name = name;
}

private String getName() { // 获取名称
	return this.name;
}

private void setSex(int sex) { // 设置性别
	this.sex = sex;
}

private int getSex() { // 获取性别
	return this.sex;
}

参照私有属性的反射操作过程,私有方法的反射调用可分解为如下三个步骤:
1、调用Class对象的getDeclaredMethod方法,获取指定名称的方法对象,即Method对象;
2、调用Method对象的setAccessible方法,并传入true值,表示将该方法设置为允许访问,以解除private的限制;
3、调用Method对象的invoke方法,并传入鸡类实例,酌情填写输入参数;
虽然方法只有调用一说,没有读写之分,但是方法的输入参数可以有也可以没有,同样输出参数可以有也可以没有,因而对于方法对象而言,反射技术需要支持以下四种情况:有输入参数、无输入参数、有输出参数、无输出参数。注意到Chicken类的新增方法getName无输入参数、有输出参数,setName有输入参数、无输出参数,故而只要实现getName与setName两个方法的反射调用,刚好就覆盖了有无入参和有无出参这四种场景。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值