gpt4 book ai didi

java - 无法从基类访问字段值

转载 作者:行者123 更新时间:2023-12-02 07:01:19 24 4
gpt4 key购买 nike

我在 Java 中有一个名为 A 的基类和一个名为 B 的派生类。我想从 A(基类)访问 B 的私有(private)或公共(public)变量的值。
我可以用这段代码读取变量名,但不能读取变量值:

protected void loadValues()
{
Field[] fields = this.getClass().getDeclaredFields();
for(Field field:fields){
try {
xLog.info(field.getName()+"-"+field.get(this).toString());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}

错误是:不允许访问字段。

我可以用 C# 轻松完成。我怎么能在java中做到这一点?这是我在 C# 中的做法:

   private void loadValues()
{
foreach (var item in GetType().GetFields())
{
Type type = item.FieldType;
object value = item.GetValue(this);
fields.Add(new Tuple<string, Type, object>(item.Name, type, value));
}
}

最佳答案

在读取该字段之前执行field.setAccessible(true);

而且在 Java 中实现这样的循环依赖之前,真的要再三考虑。像这样反转继承真的是解决问题的最佳方法吗?

反射是一个强大的工具,但通常有一种相当不干净的解决方案的味道。

关于java - 无法从基类访问字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20236976/

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