Следующий код выполняется успешно, но значение не изменяется, если ссылка является компонентом области приложения. Когда компонент является одноэлементным EJB, значение меняется.
Изменение значения с помощью AnnotatedParameter и Method.invoke меняет значение.
Кто-нибудь знаете, что может вызвать разницу в поведении? Я не могу найти причину в (java)документах, спецификациях или где-либо еще.
InjectionPoint ip = ....;
Class bc = ip.getMember().getDeclaringClass();
Object reference = CDI.current().select(bc).get();
Annotated a = ip.getAnnotated();
Object value = ....;
if (annotated instanceof AnnotatedField af) {
Field f = af.getJavaMember();
try {
boolean ac = f.canAccess(reference);
f.setAccessible(true);
f.set(reference, value);
f.setAccessible(ac);
} catch (IllegalAccessException e) {
log.error(String.format("error updating %s with %s",
f, value));
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... tionscoped
Java.lang.reflect.field.set(obj,value) не работает для области приложения ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Java.lang.reflect.field.set(obj,value) не работает для области приложения
Anonymous » » в форуме JAVA - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-