Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Java
(Модератор:
Serg79
) > Тема:
Reflection
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Reflection (Прочитано 11466 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
kok
Интересующийся
Offline
Reflection
«
:
04-11-2010 12:54 »
Привет.
Не могли бы мне помочь в описании метода...как их вбивать в set, подскажите пожалуйста....
/**
* Метод возвращает набор имен методов для класса, помеченных идентификатором protected
* @param clazz - класс
* @throws NullPointerException - если claszz является null - ом
* @return Набор имен методов
* */
public Set<String> getProtectedFieldsNames(Class clazz);
Записан
Dimka
Деятель
Команда клуба
Offline
Пол:
Re: Reflection
«
Ответ #1 :
04-11-2010 13:29 »
kok
, а кто эти загадочные "они", которые "вбиваются"?
Записан
Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Вад
Команда клуба
Offline
Пол:
Re: Reflection
«
Ответ #2 :
04-11-2010 13:57 »
<telepathy mode="on">
подозреваю, что "они" - это имена protected-методов класса clazz. А помочь топикстартер просит с реализацией метода, для которого он предъявил здесь объявление :)
</telepathy>
Записан
kok
Интересующийся
Offline
Re: Reflection
«
Ответ #3 :
04-11-2010 16:16 »
почему нельзя записать метод так......в чем ошибка
/**
* Метод возвращает текущее значение поля для данного экземпляра,
* имеющего идентификатор private, public, protected или default.
* @param clazz - экземпляр класса
* @param fieldName - имя поля класса
* @throws NoSuchFieldException - если поля с указанным именем не существует
* @throws NullPointerException - если fieldName or object является null - ом
* @return Текущее значение поля
* */
public Object getFieldValueByName(Object p, String fieldName) throws NoSuchFieldException
{
Class clazz = Class.forName("getFieldValueByName");
Field[] fields = clazz.getDeclaredFields();
if(p == null)
throw new NullPointerException();
return fieldName;
try
{
Field field = clazz.getField("id");
System.out.println("Field name = " + field.getName());
}
catch(NoSuchFieldException e)
{
e.printStackTrace();
}
}
«
Последнее редактирование: 04-11-2010 16:57 от kok
»
Записан
npak
Команда клуба
Offline
Пол:
Re: Reflection
«
Ответ #4 :
04-11-2010 19:11 »
kok
, вызов Class.forName("getFieldValueByName") вернет класс с именем getFieldValueByName. Очевидно, это не то, что вам нужно - вам нужно получить класс объекта p. Это делает метод p.getClass()
Вызов clazz.getField("id") дает объект для доступа к полю с именем id, а вам надо имя поля брать из параметра fieldName
Записан
UniTesK -- индустриальная технология надежного тестирования.
http://www.unitesk.com/ru/
kok
Интересующийся
Offline
Re: Reflection
«
Ответ #5 :
04-11-2010 20:19 »
А так....
public Object getFieldValueByName(Object p, String fieldName)
throws NoSuchFieldException
{
Field field = p.getClass().getField(fieldName);
return fieldName;
}
Добавлено через 2 минуты и 52 секунды:
сорри....так....??
public Object getFieldValueByName(Object p, String fieldName)
throws NoSuchFieldException
{
Field field = p.getClass().getField(fieldName);
field.setAccessible(true);
return field.get(p);
}
«
Последнее редактирование: 04-11-2010 20:22 от X-krol-X
»
Записан
npak
Команда клуба
Offline
Пол:
Re: Reflection
«
Ответ #6 :
04-11-2010 21:47 »
Цитата: kok от 04-11-2010 20:19
сорри....так....??
kok
, не надо у меня спрашивать. Надо написать тестовый пример и запустить его. Заработает - значит так. Не заработает - будем разбираться.
Записан
UniTesK -- индустриальная технология надежного тестирования.
http://www.unitesk.com/ru/
kok
Интересующийся
Offline
Re: Reflection
«
Ответ #7 :
04-11-2010 21:51 »
В том-то и дело что не работает...
Записан
npak
Команда клуба
Offline
Пол:
Re: Reflection
«
Ответ #8 :
08-11-2010 17:23 »
kok
, что именно не работает. Какой вы написали тестовый пример, какие ошибки получили?
Записан
UniTesK -- индустриальная технология надежного тестирования.
http://www.unitesk.com/ru/
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Java
(Модератор:
Serg79
) > Тема:
Reflection
Загружается...