关闭

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

117人阅读 评论(0) 收藏 举报

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

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元素中,这时虚拟机则会将整个参数传入方法,使程序正常运作。





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1617次
    • 积分:143
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档