![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| StepS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 26.8.2005 Где: Днепропетровск Репутация: нет Всего: нет |
Привет всем, такой вопрос:
есть строка: "MyObject.MyMethod("+10+");" как эту строку выполнить чтоб она отработала, т.е. нашелся объект MyObject и у него вызвался метод MyMethod в который передалось число 10 ??? И вообще такое возможно ? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Видимо, надо копать в сторону механизма рефлексии. Можно посмотреть общие сведения в нашем FAQ ( Java Reflection), но решения твоей проблемы там нет.
Это сообщение отредактировал(а) Lamer George - 10.10.2005, 13:14 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| pvo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
Советую глянуть в сторону BeanShell или JavaScript( Rhino ).
Они как раз и используют reflection, но пользоваться ими удобнее. Еще вариант - сделать динамическое создание и компиляцию классов, но это сложнее и оправдано в том случае, если предполагается повторное использование выражений. |
|||
|
||||
| StepS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 26.8.2005 Где: Днепропетровск Репутация: нет Всего: нет |
то что нужно копать в сторону reflection эт я знаю
|
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Имхо, получить объект по имени нельзя - у него ведь нет имени
Только если создать новый объект по имени класса. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
а если объекту добавтить поле "ИМЯ" ?
-------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| pvo |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
Пример использования BeanShell (http://www.beanshell.org/). С JavaScript - похоже. Его искать на мозилле нужно, называется rhino.
А вот такая задачка в общем случае неразрешима ... Для того, чтобы объект нашелся, он должен где-то храниться, например в мапе |
||||
|
|||||
| StepS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 26.8.2005 Где: Днепропетровск Репутация: нет Всего: нет |
это если мы знаем какой объкт мы собираемся создавать ! а если не знаем ..?? например я пишу в текстовом поле: MyObject.BuildAnyThing() и нажимаю кнопочку <Execute> и начинает выполнятся метод BuilAnyThing() класса MyObject. и вместо MyObject я могу написать YouObject, если такой есть класс ! |
||||
|
|||||
| pvo |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
Я же говорю, что в общем случае задачка поиска любого объекта - нерешаема. Тут надо малость конкретизировать - например, если MyObject каждый раз создается новый и имеет ктор без параметров, то пишешь что-нить типа:
А если тебе нужно использовать произвольный объект, созданный в приложении, то - извини, но так не получится (ИМХО) Это сообщение отредактировал(а) pvo - 10.10.2005, 14:04 |
||||
|
|||||
| StepS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 26.8.2005 Где: Днепропетровск Репутация: нет Всего: нет |
ясно спасиба !
я такой же вопрос задал на форуме C# там есть решение такой задачи ! думал в Java тоже есть, ан нет еще разок спасиб, надеюсь что скоро в яве такая возможность появиться |
|||
|
||||
| pvo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
Глянул, что тебе там написали - ровно тоже самое, что и тут. Поиск класса в Java тоже можно реализовать, например с помощью Package.getPackages(); Нельзя найти экземпляр объекта, созданный где-то в программе. Это сообщение отредактировал(а) pvo - 10.10.2005, 15:04 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |