Java.lang.reflect.field.set(obj,value) не работает для области приложенияJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java.lang.reflect.field.set(obj,value) не работает для области приложения

Сообщение Anonymous »

Следующий код выполняется успешно, но значение не изменяется, если ссылка является компонентом области приложения. Когда компонент является одноэлементным 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»