gpt4 book ai didi

java - 从子类外部访问父类的 protected 方法(使用反射或任何可行的方法)

转载 作者:行者123 更新时间:2023-11-28 20:02:34 26 4
gpt4 key购买 nike

我四处寻找一个没有运气的解决方案,这就是我所拥有的以及我正在努力实现的目标

父类

public abstract class MyAbstractParentClass{
private String privateParentField;

protected String getPrivateParentField(){
return privateParentField;
}

public void setField(String value){
privateParentField = value;
}
}

子类

public class MyChlidClass extends MyAbstractParentClass{
@Override
public void setField(String value){
super.setField(value);
}
}

我正在尝试调用 MyChlidClasssetField 方法,然后调用 MyAbstractParentClassprotected String getPrivateParentField( )后记;

@Test
public void f(){
Method[] m = MyChlidClass.class.getDeclaredMethods();
for (Method method : m) {
System.out.println(method.getName());
}
}

但是上面这段代码只返回MyChlidClass中声明的方法,没有父类的protected方法,我怎么能访问 protected 方法呢?有任何想法吗?

非常感谢你:)

编辑这是那些感兴趣的人的最终解决方案

MyChildClass child = new MyChildClass();
chlid.setField("FOO_BAR");

Method getPrivateParentField = child.getClass().getSuperclass().getDeclaredMethod("getPrivateParentField");
getPrivateParentField.setAccessible(true);

String result = (String) getPrivateParentField.invoke(child);
System.out.println((String)result); //prints out FOO_BAR

PS:有一些异常你可以捕获或者为它们添加 throws 声明;

再次感谢您的帮助

最佳答案

您可以通过调用获取父类(super class)方法

MyChlidClass.class.getSuperclass().getDeclaredMethods();

关于java - 从子类外部访问父类的 protected 方法(使用反射或任何可行的方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649940/

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