Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Reflection

37K
19 мая 2008 года
tanatoss
7 / / 18.05.2008
Вопрос у меня казалось бы простой, но тем не менее прямого ответа в джавадоке я не нашел.
1) Есть имя пакета. По нему нужно найти все классы, находящиеся в данном пакете в classpath.
2) Есть суперкласс и по нему нужно найти всех видимых в classpath подклассов.
Заранее благодарен за ответы.
63
19 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: tanatoss
Вопрос у меня казалось бы простой, но тем не менее прямого ответа в джавадоке я не нашел.
1) Есть имя пакета. По нему нужно найти все классы, находящиеся в данном пакете в classpath.
2) Есть суперкласс и по нему нужно найти всех видимых в classpath подклассов.
Заранее благодарен за ответы.


В точности такая же задача ставится, когда реализуется автодополнение кода в IDE после import java. Ctrl + Space. Возможно, имеет смысл посмотреть их исходники/ задать вопрос на их форуме.

63
20 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Есть мнение, что через рефлексию (по крайней мере стандартную) этого нельзя сделать.
37K
21 мая 2008 года
tanatoss
7 / / 18.05.2008
Скорее всего так и есть :(

Задача вобщем-то была тривиальная - реализовать поддержку плагинов. Но хотелось ее сделать поэллегантнее. А теперь прийдется юзать properties файлы с описанием плагинов.
391
21 мая 2008 года
Archie
562 / / 03.02.2005
А чего просто в classpath-е не посмотреть, какие классы лежат в подкаталогах пакета?
По суперклассу потомков найти трудее, т.к. они могут быть раскиданы по разным пакетам.
63
22 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: Archie
А чего просто в classpath-е не посмотреть, какие классы лежат в подкаталогах пакета?
По суперклассу потомков найти трудее, т.к. они могут быть раскиданы по разным пакетам.


Classpath для конечной программы берется из нескольких разных источников - а как из программы узнать их все?
Я этим вопросом как-то особо не задавался раньше.

3.7K
22 мая 2008 года
bioflash
169 / / 01.10.2005
Мне кажется, что скорее всего IDE делают полный поиск и индексацию по всем источникам... Хотя полностью не уверен - но не рефлексия точно.
502
22 мая 2008 года
Jail
550 / / 30.01.2007
NetBeans IDE -> Help -> Javadoc Index Search - > Find -> {Show Source, Sort By Name, Sort By Packages, Sort By Type}
Исходники открыты, все что нужно можно посмотреть.
63
22 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Это понятно - я в своем первом посте это и предложил ;)
Но это оверкил. Хотелось сначала найти готовое решение в стандартной
библиотеке
37K
28 мая 2008 года
tanatoss
7 / / 18.05.2008
К сожалению 1) Я не нашел, хотя перерыл все стандартные методы. 2) Готового решения никто не знает - спрашивал на нескольких форумах и вживую у уважаемых мной прогеров. 3) Индексация не подходит поскольку зохавает весь перфоманс который и так не очень то хорош. В ИДЕ классно тем что все кешируется в метафайлах, а мне пришлось бы хранить все это в памяти. Слишком большая цена для такой задачи.
63
28 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Мне не на шутку стало интересно - что у тебя за задача?
Не сталкивался никогда с такой необходимостью, если честно, на практике.
36K
23 июня 2008 года
Alno
34 / / 23.06.2008
Приходилось решать подобную задачу, необходимо было преобразовать все классы с определенным свойством, решения через рефлекшн похоже не существует.

Мне пришлось сканировать classpath.
355
09 июля 2008 года
<SCORP>
786 / / 21.10.2006
если java 5 и она SUNовская, можно поробовать аннотации
http://java.sun.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html#getInitiatedClasses(java.lang.ClassLoader)
или какой-то "рукопашный" сканер аннотаций http://bill.burkecentral.com/2008/01/14/scanning-java-annotations-at-runtime/
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог