如何在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) {...}
} }
我有java.lang.IllegalAccessException
,当调用f.get(myTarget)
时,其中myTarget
是运行时获取的bean实例,f
是它的领域。
在循环中运行时:
System.out.println("FIELD: " + f);
让字段名称确定:
FIELD: private java.lang.String aspectlogging.TestableBean.name
FIELD: private java.lang.String aspectlogging.TestableBean.name
很奇怪,这个价值无法获得。
答案 0 :(得分:1)
arg
(called obj
in the Javadoc)是要操作的实例。在您的示例中,实例为bd
,因此请使用f.getInt(bd)
提取int
字段,依此类推。