利用反射访问类的私有成员

来源:互联网 发布:宏观经济数据解读 编辑:程序博客网 时间:2024/04/30 07:09

一般情况下,java类的私有成员变量不能直接访问,如果想要访问某个私有成员变量,就要给这个变量写一个访问方法getXXX()。

如果累没有定义这个访问方法,我们好像束手无策的。

其实,利用java的反射机制,我们可以做到!

public class AccessPrivateField {
    @SuppressWarnings("unused")
    private String privateField="private";
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        try {
            Class cls = Class.forName("cdsn.test.oliver.javase.AccessPrivateField");
            Object obj = cls.newInstance();
            Field field = cls.getDeclaredField("privateField");
            field.setAccessible(true);
            System.out.println(field.get(obj));
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
}
.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }输出结果:private
原创粉丝点击