通过反射访问子类中的超类的私有memeber变量

时间:2015-08-30 07:53:09

标签: java

我有这个类是RMIserviceexporter,基本上这个类是spring remoting现在这里有一个名为注册表端口的int变量

private int registryPort = Registry.REGISTRY_PORT; // which is set to 1099

它有setter方法

public void setRegistryPort(int registryPort) {
    this.registryPort = registryPort;
}

现在我已经在以后的阶段扩展了这个类,我已经创建了一个新的类abcexpoerter,它基本上扩展了RMIserviceexporter,我必须访问RMIserviceexporter的这个registryPort变量,它是变量名称registryPort,但我不能访问这个变量,因为现在没有在父类中定义的getter方法,请告诉我可以通过反射在扩展的lass中访问此私有变量值

   class abcexpoter extends RMIServiceExporter
        {
            // now in this class i want to access the registerPort variable value  please advise how can i //access this registry port variable inside this class
        }

1 个答案:

答案 0 :(得分:1)

可以,但你不应该。该成员可能是私人,原因

Classjava.lang.reflect package文档中对此进行了介绍:您可以通过getDeclaredField获取字段,然后使用setAccessible强制访问该字段,然后使用相关{{1}来自FieldgetIntgetString,等等)的方法来获取其值。

例如,因为它是int

Field field = TheClass.class.getDeclaredField("registryPort");
field.setAccessible(true);
int port = field.getInt(this);