java反射调用私有方法和修改私有属性
2015-10-19 00:00
791 查看
//调用私有方法 package com.java.test; public class PrivateMethod { private String sayHello(String name) { return "hello "+name; } }
测试:
package com.java.test; import java.lang.reflect.Method; public class PrivateMethodTest { public static void main(String[] args)throws Exception { PrivateMethod p = new PrivateMethod(); 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[]{"lzyer"}); System.out.println(str); } }
修改私有属性:
package com.java.test; public class PrivateField { private String name="zhangsan"; public String getName() { return this.name; } }
测试:
package com.java.test; import java.lang.reflect.Field; public class PrivateFieldTest { public static void main(String[] args)throws Exception { PrivateField p = new PrivateField(); Class<?> clazz = p.getClass(); Field field = clazz.getDeclaredField("name"); field.setAccessible(true);//压制java检查机制 field.set(p, "lisi"); System.out.println(p.getName()); } }
相关文章推荐
- Java中的的XML文件读写与DOM
- Java实验报告(实验三)
- Java XML解析技术
- java实验报告(实验三)
- java was started but returned exit code = -80306369
- java设计模式系列--职责链模式
- Eclipse的一些简单设置
- spring mvc 500错误
- JAVA I/O 系统
- Java内部类不能引用本地变量?
- eclipse添加第三方源码
- JAVA 集合框架
- Spring环境
- Dubbo+spring+springmvc+mybatis+Maven+Jetty+Mysql+Ajax多框架融合学习网址收藏
- MyEclipse就会报 Errors running builder 'DeploymentBuilder' on project '工程名' xxx
- Java集合框架
- java内存区域各部分内容及内存溢出介绍
- [转]Java中继承、多态、重载和重写介绍
- Java
- Java基础---多线程