我对于发射机制的了解就是它非常流氓,不顾成员变量或成员方法前的保护机制是什么,都可以访问。非常霸道!
这也告诉我们开发中须谨慎使用,否则后果严重。什么访问权限都形同虚设了
先是一个类文件
//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