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

    技术2022-05-20  52

    一般情况下,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

    最新回复(0)