我们都知道,Java可以将类的方法声明成Private,用于限制外部访问,可是,真的可以限制么,真的Private就是真正的Private么?
贴代码:
class Pack {
public void pubFun() {
System.out.println("Pack.prifun");
};
private void priFun() {
System.out.println("Pack.prifun");
}
}
这个是我的class,有个public的,有个private的,我们看看如何去使用这个private的:
public class UsingPack {
public static void main(String[] args) {
try {
Class clz = Class.forName("com.java.IsPrivate.Pack");
Method[] mes = clz.getDeclaredMethods();
for (Method me : mes) {
if (me.getName() == "prifun") {
me.setAccessible(true);
me.invoke(clz.newInstance(), null);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
看看结果哈:
看见了么,Private真的不是Private的,你可以访问!!!