![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| last |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
Вот такая проблема,
есть название пакета(package) , строка скажем, требуется получить список классов пакета, причем и видимых снаружи пакета (public то есть) так и доступных только в пакете. Пакет есть в нашем classpath , разумеется. Если, напимер, есть имя класса, то можно с помощью reflection получить его поля, методы, конструкторы и пр. это я знаю как делать, а вот как с package --- ума не приложу |
|||
|
||||
| redrick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: 3 Всего: 5 |
поищи по этому разделу и еще по j2me - помню это обсуждалось
-------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 4 Всего: 57 |
.....Млин за секунду из головы вылетело ладно как вспомню отпишу......... Это сообщение отредактировал(а) Bulat - 4.7.2006, 19:08 -------------------- менеджер по кодеврайтингу |
|||
|
||||
| djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
Вот нашел кое-что http://java.sun.com/j2se/1.5.0/docs/guide/...PackageDoc.html
|
|||
|
||||
| last |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
Не то это, это апи для JavaDoc, про то как доклеты свои для генерации писать. Как это можно применить в этом случае, незнаю. Кстати, про JavaDoc. Если он есть для данного пакета, то список классов можно получить путем анализа листинга директории с JavaDoc этого package (ls -l /java/util и тд). Такой вот обходной путь Уверен, что проще способ должен быть. Браузеры классов в IDE показывают список классов для пакета без всякого JavaDoc. Вот только как? Это сообщение отредактировал(а) last - 5.7.2006, 12:15 |
|||
|
||||
| djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
А если так
|
|||
|
||||
| last |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
Т.е, как я понимаю предлагается следующее:
берутся все *.class из classpath, из директорий и jar (jar тоже можно рассматривать как запакованное дерево каталогов) и анализирутся пути до корня и имена файлов. находим в classpath package.jar, к примеру, со следующей структурой +- | +com | +mysite | Super.class находим рекурсивным перебором Super.class, а путь до него --- будет имя пакета, имеем com.mysite.Super , запоминаем и так далее после перебора у нас будет дерево классов, распределенных по пакетам. Так проблему можно решить, конечно, но придется перебирать весь classpath, долго это будет и не изящно. Видимо по другому нельзя. Или можно? |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 4 Всего: 57 |
djGri, млин, пока освободился опередил.
last, если узнаешь другой способ попроще, дашь знать. -------------------- менеджер по кодеврайтингу |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Однозначного решения проблема не имеет. Т.к. классы могут быть в нескольких jar-ах, могут лежать россыпью в папках, могут загружаться по сети (для апплетов например), могут загружаться из базы данных (например Oracle-овский загрузчик классов), плюс комбинация всего вышеперечисленного.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| djGri |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.2.2005 Репутация: 1 Всего: 3 |
Для решения этой задачи, пока не существует APIs.
Есть несколько решений, но все они похожие на мое Вот тут http://forum.java.sun.com/thread.jspa?thre...35&tstart=0 |
|||
|
||||
![]()
|
| Правила форума "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. |