天天看点

论java之反射机制,访问类中私有变量,调用私有方法

我对于发射机制的了解就是它非常流氓,不顾成员变量或成员方法前的保护机制是什么,都可以访问。非常霸道!

这也告诉我们开发中须谨慎使用,否则后果严重。什么访问权限都形同虚设了

先是一个类文件

//f.java
public class f{
private int i;
f(){
i = -1;
}
private void set(int aa){
this.i = aa;
}
public int get(){
return this.i;
}
}      
//fanshe.java
import java.lang.reflect.*;
public class fanshe {
public static void main(String[] args) {
// TODO Auto-generated method stub
   try{
 fanshe fan = new fanshe();
     f  f1 =  new f();
     System.out.println(f1.get());
     Class c = f1.getClass();
     Method method = c.getDeclaredMethod("set", int.class);
     method.setAccessible(true);
     method.invoke(f1, 10000);
     System.out.println(f1.get());
     Field field = c.getDeclaredField("i");
     field.setAccessible(true);
     field.set(f1, new Integer(99090));
     System.out.println(f1.get());
 }
   catch(Exception e){
   e.printStackTrace();
   }
}
}      
-1
10000
99090