java反射调用成员变量的方法_java se 064 使用反射机制调用对象的私有方法、访问对象的私有成员变量.docx...

java se 064 使用反射机制调用对象的私有方法、访问对象的私有成员变量.docx

339858c7e0546a79f5c1b4f79bee60c5.gif

还剩

2页未读,

继续阅读

下载文档到电脑,马上远离加班熬夜!

亲,喜欢就下载吧,价低环保!

内容要点:

Java SE 064 使用反射机制调用对象的私有方法、访问对象的私有成员变量一、 Method 对象的 setAccessible(Boolean flag)为对象设置可访问的标志,如果标志为 true,表示被反射的对象应该压制 java 语言的访问检查。如果标志为 false,则 java 会强制访问权限检查。package com.javase.refelect;/*** 有些时候想去使用某个类提供的私有方法,比如想对其进行测试,那么没法去改变 目标的方法,因此就只能通过反射的方式去调用它,因此反射为我们提供了这样一种机制,可以在类的外面调用private的一个私有方法,或者是修改private 的成员变量* @author x_xiongjie**/public class Private {private String sayHello(String name){return "hello " + name;}}package com.javase.refelect;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class TestPrivate {public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {Private p = new Private();Class classType = p.getClass();Method method = classType.getDeclaredMethod("sayHello", new Class[]{String.class});method.setAccessible(true);//压制 java的访问控制检查String str = (String) method.invoke(p, new Object[]{"xiongjie"});System.out.println(str);}}二、访问控制检查method.setAccessible(true);//压制 java 的访问控制检查在 SSH 框架中,很多时候框架需要用到。Hibernate 要求提供一个不代参数的构造方法,对类的属性提供 set 方法,get 方法。只有提供了这样一种约定,Hibernate 才能知道这个属性要想给它设置值的时候,应该调用什么方法,有的时候,没有提供这个方法,也能赋值,给 private 的成员变量赋值,就是通过反射的方式来做到的。调用 set 方法也是通过反射来去调用的。二、 private 属性package com.javase.refelect;public class Private2 {private String name = "zhangsan";public String getName() {return name;}}package com.javase.refelect;import java.lang.reflect.Field;public class TestPrivate2 {public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgument

发表评论

暂无评论,赶快抢占沙发吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值