反射(四)使用反射机制调用对象的私有方法及成员变量
2016-01-09 20:34
901 查看
package com.ygl.reflect;
public class Private {
private String sayName(String name){
return name;
}
}
//*****************************
package com.ygl.reflect;
import java.lang.reflect.Method;
public class Test11 {
public static void main(String[] args) throws Exception {
Private tt=new Private();
Class<?> clazz=tt.getClass();
//可以获得定义过的对象,也即可以获得私有的
Method method=clazz.getDeclaredMethod("sayName", new Class[]{String.class});
method.setAccessible(true);//压制java的默认访问控制的检查
String str = (String) method.invoke(tt, new Object[]{"ygl"});
System.out.println(str);
}
}
//========================================
package com.ygl.reflect;
public class Private {
private String name="yyy";
public String getName(){
return name;
}
}
//****************************************
package com.ygl.reflect;
import java.lang.reflect.Field;
public class Test12 {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
Private p=new Private();
Class<?> clazz=p.getClass();
Field field=clazz.getDeclaredField("name");
field.setAccessible(true);
field.set(p, "ygl");
System.out.println(p.getName());
}
}
public class Private {
private String sayName(String name){
return name;
}
}
//*****************************
package com.ygl.reflect;
import java.lang.reflect.Method;
public class Test11 {
public static void main(String[] args) throws Exception {
Private tt=new Private();
Class<?> clazz=tt.getClass();
//可以获得定义过的对象,也即可以获得私有的
Method method=clazz.getDeclaredMethod("sayName", new Class[]{String.class});
method.setAccessible(true);//压制java的默认访问控制的检查
String str = (String) method.invoke(tt, new Object[]{"ygl"});
System.out.println(str);
}
}
//========================================
package com.ygl.reflect;
public class Private {
private String name="yyy";
public String getName(){
return name;
}
}
//****************************************
package com.ygl.reflect;
import java.lang.reflect.Field;
public class Test12 {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
Private p=new Private();
Class<?> clazz=p.getClass();
Field field=clazz.getDeclaredField("name");
field.setAccessible(true);
field.set(p, "ygl");
System.out.println(p.getName());
}
}
相关文章推荐
- 返回系统HOME桌面
- 含义while((ch=getchar())!='#'){},while(ch=getchar(),ch!='#'),while(ch=getchar() && ch!='#')
- 在 NetBeans IDE 中调试 PHP 源代码
- 转: Oracle AWR 报告 每天自动生成并发送邮箱
- 重拾拓展欧几里得 & 简单不定方程
- 说完电调就是螺旋桨了
- #Objective - C - UI-design - 第四天 -UIKit框架-UIKit-事件手势-刮刮乐小游戏
- Python修改当前工作目录
- Android 开发中百度地图运行一段时间地图轨迹不更新的问题
- 人见人爱A+B(1)
- iOS navigation (pop)返回按钮点击提示框
- 快播CEO王欣受审:贾跃亭微博受网友围攻声讨
- Git(二)基本操作
- 开通博客的第一帖
- MongoDB:如何正常关闭服务(转)
- java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState解决?
- SMO推导和代码-记录毕业论文4
- linux下搭建nagios监控
- 周易六十四卦——地天泰卦
- java表 ADT