gpt4 book ai didi

java - 通过反射访问子类中父类(super class)的私有(private)成员变量

转载 作者:行者123 更新时间:2023-12-01 11:11:34 25 4
gpt4 key购买 nike

我有一个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 方法(getIntgetString 等)来获取其值。

例如,因为它是一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com