java反射机制怎样调用类的私有方法?
2016-05-20 16:56
489 查看
转自:http://blog.chinaunix.net/uid-26884465-id-3337802.html
代码如下:
package test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* @author : suyuyuan
* @date :2016年5月20日 下午4:45:16
* @version 1.0
*/
public class ReflectionTest {
public static void setObjectColor(Object obj) throws SecurityException, NoSuchMethodException,
IllegalArgumentException, InvocationTargetException, IllegalAccessException {
Class cls = obj.getClass();
// 获得类的私有方法
Method method = cls.getDeclaredMethod("privateMethod", null);
method.setAccessible(true); // 没有设置就会报错,设置可以调用私有方法。
// 调用该方法
method.invoke(obj, null);
}
public static void main(String args[]) throws SecurityException, IllegalArgumentException, NoSuchMethodException,
InvocationTargetException, IllegalAccessException {
setObjectColor(new MyTest());
}
}
// 测试类
class MyTest {
public void setMyTest() {
System.out.println("setMyTest");
}
/**
* 类的私有方法
**/
private void privateMethod() {
System.out.println("调用了 private Method");
}
}
代码如下:
package test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* @author : suyuyuan
* @date :2016年5月20日 下午4:45:16
* @version 1.0
*/
public class ReflectionTest {
public static void setObjectColor(Object obj) throws SecurityException, NoSuchMethodException,
IllegalArgumentException, InvocationTargetException, IllegalAccessException {
Class cls = obj.getClass();
// 获得类的私有方法
Method method = cls.getDeclaredMethod("privateMethod", null);
method.setAccessible(true); // 没有设置就会报错,设置可以调用私有方法。
// 调用该方法
method.invoke(obj, null);
}
public static void main(String args[]) throws SecurityException, IllegalArgumentException, NoSuchMethodException,
InvocationTargetException, IllegalAccessException {
setObjectColor(new MyTest());
}
}
// 测试类
class MyTest {
public void setMyTest() {
System.out.println("setMyTest");
}
/**
* 类的私有方法
**/
private void privateMethod() {
System.out.println("调用了 private Method");
}
}
相关文章推荐
- java中String.replaceAll()的使用
- java-RCP
- java.io.Serializable 序列化问题【原】
- JDK Tools - wsimport: 编译 WSDL 生成 JAX-WS 规范的 Java 类
- Java同步之volatile和synchronized的区别
- mybatis集成spring操作数据库(注解方式
- struts2与spring整合问题,访问struts2链接时,spring会负责创建Action
- 在Struts2的Action中取得请求参数值的几种方法
- java项目如何运行
- Java设计模式值简单工厂设计模式
- RocketMQ使用步骤--- 开发测试环境搭建及Java用例
- MyBatis6:MyBatis集成Spring事物管理(下篇)
- JAVA数组的典型操作
- 解决:eclipse 断点调试进入到class文件,无法查看变量值问题
- MyBatis5:MyBatis集成Spring事物管理(上篇)
- java
- Java 类和对象12
- java 面向对象练习题11
- [原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)
- spring dubbo junit4 测试类配置