gpt4 book ai didi

java - 在运行时获取字段值

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:49 26 4
gpt4 key购买 nike

如何获取Runtime for Java中字段的值?

编辑:

使用此结构:

    ClassPathScanningCandidateComponentProvider scanner =
new ClassPathScanningCandidateComponentProvider(
false);
for (BeanDefinition bd : scanner
.findCandidateComponents("aspectlogging"))
{
Class myTarget = null;
try {
myTarget = Class.forName(bd.getBeanClassName());
}
catch (ClassNotFoundException e) {...}
for (Field f:myTarget.getDeclaredFields()){
try {
System.out.println("FIELD: " + f.get(myTarget));
} catch (IllegalArgumentException e) {...}
catch (IllegalAccessException e) {...}
} }

当调用f.get(myTarget)时,我遇到了java.lang.IllegalAccessException

其中myTarget是在运行时获取的bean的实例,f是它的字段。

当在以下循环中运行时:

System.out.println("FIELD: " + f);

获取字段名称正常:

FIELD: private java.lang.String aspectlogging.TestableBean.name
FIELD: private java.lang.String aspectlogging.TestableBean.name

很奇怪,这个值取不到。

最佳答案

arg ( called obj in the Javadoc ) 是要操作的实例。在您的示例中,实例为 bd,因此使用 f.getInt(bd) 提取 int 字段等。

关于java - 在运行时获取字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757723/

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