Как получить значение поля в Runtime for Java?
EDIT:
используя эту конструкцию:
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
- это экземпляр компонента, полученного во время выполнения, а f
- его поле.
при выполнении в цикле:
System.out.println("FIELD: " + f);
получил имена полей ОК:
FIELD: private java.lang.String aspectlogging.TestableBean.name
FIELD: private java.lang.String aspectlogging.TestableBean.name
Это довольно странно, это значение не может быть получено.