使用java反射从包外部访问非公共类的成员

时间:2014-03-28 13:18:02

标签: java reflection

package1.I中有一个非公共类A.我想从package2中的另一个类B访问该类的成员。我使用构造函数创建了类A的实例。我将访问类A中的字段和方法吗?

package package1;
class A {
    Integer i;
}

package package2;
class B {
    public void accessClassA() {

        Class aClass = Class.forName("package1.A");
        Constructor<?> con = aClass.getDeclaredConstructor();
        con.setAccessible(true);
        //code to access fields of class A

    }
}

1 个答案:

答案 0 :(得分:1)

Class aClass = Class.forName("package1.A");
Constructor<?> con = aClass.getDeclaredConstructor();
con.setAccessible(true);
Object instance = con.newInstance();
Field intField = aClass.getDeclaredField("i");
intField.setAccessible(true);
Integer i = (Integer)intField.get(instance);