黑马程序员——13_反射笔记

获取并操作类中受保护对象

1: 创建目标类Field对象

Field f=目标类.getClass().getDeclaredField("受保护变量名");

2:设置Field标记

f.setAccessible(true);

此时即使目标类中的变量为private也能访问并修改(get和set)。



getFields()方法与getDeclaredFields()

均返回Filed类型数组,若想对指定Field操作,需要遍历该数组并在遍历过程中进行判断和操作。




调用静态方法

1:创建目标类Method对象

Method m=目标类.getClass().getDeclaredMethod("方法明",参数.class);

2:调用

m.invoke(null,参数);




参数为数组时,传入写法需注意:

当参数为某一个类型的数组时,在调用该方法时若写:

定义:  方法(类型[] args);

调用:   方法(new 类型[] args);   方法(数组名);

此时虚拟机会将此参数识别为jdk低版本中多参数写法,则会对数组进行遍历,导致程序挂。

解决方案:

方法(new (Object)类型[] args);   方法((Object)数组名);

将参数数组封装在一个Object元素中,这时虚拟机则会将整个参数传入方法,使程序正常运作。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值