Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.143.207] |
|
Сообщ.
#1
,
|
|
|
вопрос иакой ... подключаю клас и пытаюсь изменить значение его поля обственно код
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; } //++++++++++++++++++ скажите что не так или покажите как надо!! |
Сообщ.
#2
,
|
|
|
Цитата ss1943g @ скажите что не так Вы пытаетесь установить значение поля не экземпляру своего класса, а соответствующему экземпляру java.lang.Class. Для создания объекта воспользуйтесь методом Class.newInstance(): Class klass = Class.forName(...); Object instance = klass.newIstance(); |
Сообщ.
#3
,
|
|
|
ok понял спасибо за разьяснения все проблемы тутже отпали
|