Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / reflection.field / 6 сообщений из 6, страница 1 из 1
21.10.2007, 06:04:55
    #34882935
Dr_No
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
reflection.field
вопрос иакой ... подключаю клас и пытаюсь изменить значение его поля обственно код


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); }

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

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

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

хелп
...
Рейтинг: 0 / 0
21.10.2007, 13:40:55
    #34883058
дЭбил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
reflection.field
Dr_Noвопрос иакой ... подключаю клас и пытаюсь изменить значение его поля обственно код
Да ну? А у какого класса ты пытаешься изменить значение поля?
И что ты хочешь вообще сделать таким "подключением".
...
Рейтинг: 0 / 0
21.10.2007, 16:01:52
    #34883159
Dr_No
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
reflection.field
я хочу подключить этот класс....

>...Да ну? А у какого класса ты пытаешься изменить значение поля?
у классаа obj естественно
...
Рейтинг: 0 / 0
21.10.2007, 16:24:40
    #34883178
дЭбил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
reflection.field
Dr_Noя хочу подключить этот класс....

>...Да ну? А у какого класса ты пытаешься изменить значение поля?
у классаа obj естественно
То, что ты пытаешься сделать (если бы сделал правильно, вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try  {
   Class  obj= Class .forName("com.Obj");//мой класс

  Field field = obj.getDeclaredField("str");
  field.setAccessible(true);

  field.set(obj.newInstance(), "newValue");
}  catch  (Exception e) {
  e.printStackTrace(System.err);
}
) совершенно аналогично следующей записи:

Код: plaintext
1.
   new  Obj().str = "newValue";

Еще раз — что ты пытаешься сделать с помощью Reflections?
...
Рейтинг: 0 / 0
21.10.2007, 17:56:58
    #34883265
Dr_No
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
reflection.field
хочу сделать чтото типа плагинов..... поэтому раз заранее не известно какой клас есть а какого нет то придёться использовать рефлект.......
а тепер др вопрос а как получить это поле

System.out.println( field.get(obj.newInstance()));

возвращает название типа а не само его значение.... как вернуть значение????
...
Рейтинг: 0 / 0
21.10.2007, 18:16:48
    #34883287
Dr_No
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
reflection.field
всё вроде разобрался!!!! так что вопрос снят....
а вообще как я понял для облегчения использования методов подключаемые классы должны использовать кактото интерфейс чтоб потом через него можно было вызывать методы
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / reflection.field / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]