gpt4 book ai didi

Java:如何访问没有 "getXXX"方法的对象的子对象到该子对象

转载 作者:行者123 更新时间:2023-11-29 06:25:48 24 4
gpt4 key购买 nike

我将用 Eclipse Debugger 中的图片进行解释

我有一个名为“FieldContext”的类,(我无法编辑它,它是在 Java OVal API 中编译的)

在 eclipse 变量选项卡上的“FieldContext”中是“CompileTimeType”和“field”

alt text

Q1 变量选项卡中的图标是否有图例?比如带“F”的红色框 + 黄色菱形框是什么意思?

现在我想访问“field”对象(RedBox)中的字段..最好是“name”

alt text

但是“FieldContext”没有“getField()”方法,但它有一个“getCompileTimeType()”方法。

Q2 那么,是否有办法从“FieldContext”中获取该字段对象作为“SerializableField”类?

如果 eclipse 调试器可以查看/获取/编辑它们,那么我希望我可以在 Java 中做同样的事情。

最佳答案

Q1:我认为黄色表示protected,红色表示private。 “F”表示 final

Q2:这可以使用反射来完成。假设有一个带有私有(private)成员字段 pm 的类 C 并且您想访问 instanceOfC.pm,这是要走的路:

/* exception stuff ommitted (for readability and shortness) */
C instanceOfC = new C();

Class<? extends C> clazz = instanceOfC.getClass();
Field f = clazz.getDeclaredField("pm");
f.setAccessible(true);

... = f.get(instanceOfC); //<-- this will get you the value of `c.pm`

您可能应该阅读 Class 的 JavaDoc , FieldMethod

关于Java:如何访问没有 "getXXX"方法的对象的子对象到该子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517490/

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