На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> рефлектион фиелд , ошибка при попытке изменения
    вопрос иакой ... подключаю клас и пытаюсь изменить значение его поля обственно код


    ExpandedWrap disabled
      try {
          Class obj=Class.forName("com.Obj");//мой класс
       
          Field field = obj.getDeclaredField("str");
          field.setAccessible(true);
          field.set(obj, "newValue");
          //System.out.println("ok" );
          } catch (Exception e) {e.printStackTrace(System.err); }

    на что вылетает ошибка

    ExpandedWrap disabled
      java.lang.IllegalArgumentException
      at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
      at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
      at java.lang.reflect.Field.set(Field.java:656)
      at test.Main.<init>(Main.java:17)
      at test.Main.main(Main.java:37)


    сам клас Obj

    ExpandedWrap disabled
      package com;
      public class Obj
      {
          public Obj()
          {
              str = "string";
          }
          public String str;
      }
      //++++++++++++++++++

    скажите что не так или покажите как надо!!
    Сообщение отредактировано: wind -
      Цитата ss1943g @
      скажите что не так

      Вы пытаетесь установить значение поля не экземпляру своего класса, а соответствующему экземпляру java.lang.Class. Для создания объекта воспользуйтесь методом Class.newInstance():

      ExpandedWrap disabled
        Class klass = Class.forName(...);
        Object instance = klass.newIstance();
        ok понял спасибо за разьяснения все проблемы тутже отпали
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0177 ]   [ 14 queries used ]   [ Generated: 17.05.24, 11:29 GMT ]