我有一个RMIserviceexporter类,基本上这个类是spring remoting,现在有一个名为registry port的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 方法,请告诉我我可以通过反射访问扩展类中的这个私有(private)变量值
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
}
最佳答案
你可以,但你不应该。该成员可能是私有(private)的是有原因的。
这在 Class
中有介绍。和 java.lang.reflect
package文档:您可以通过 getDeclaredField
获取该字段,然后使用 setAccessible
强制其可访问,然后使用 Field
中的相关 getXyz
方法(getInt
、getString
等)来获取其值。
例如,因为它是一个int
:
Field field = TheClass.class.getDeclaredField("registryPort");
field.setAccessible(true);
int port = field.getInt(this);
关于java - 通过反射访问子类中父类(super class)的私有(private)成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32294416/