Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1146440
  • 博文数量: 103
  • 博客积分: 1897
  • 博客等级: 上尉
  • 技术积分: 1717
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-19 21:02
文章分类

全部博文(103)

文章存档

2013年(19)

2012年(84)

分类: Java

2012-09-04 22:38:42

试想一下,如果你可以轻易地调用一个类的私有方法,那么是不是说你的封装都失效了?最近在看java的反射机制,发现居然可以利用java的反射机制去调用其他类的私有方法,至于这能干什么,那就见人见智了。。,我写的一段简易实例代码如下:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @author thomaslwq
 * @version 创建时间:Sep 4, 2012 9:53:49 PM
 * 类说明
 */
public class ReflectionTest {
   
    public static void setObjectColor(Object obj) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAcces***ception, InvocationTargetException{
        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, IllegalAcces***ception, InvocationTargetException{
       
        setObjectColor(new MyTest());
    }
}
 //测试类 
class MyTest{
   
   
    public void setMyTest(){
        System.out.println("setMyTest");
    }
    /**
     类的私有方法
     **/
    private void privateMethod(){
        System.out.println("调用了 private Method");
    }
   
}





阅读(11004) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~