Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список классов пакета, Список классов пакета 
:(
    Опции темы
last
Дата 4.7.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.7.2006

Репутация: нет
Всего: нет



Вот такая проблема, 

есть название пакета(package) , строка скажем,  требуется получить список классов пакета, причем и видимых снаружи пакета (public то есть) так и доступных только в пакете.

Пакет есть в нашем classpath , разумеется.

Если, напимер, есть имя класса, то можно с помощью reflection получить его поля, методы, конструкторы и пр. это я знаю как делать, а вот как с  package --- ума не приложу  smile .
 
PM MAIL   Вверх
redrick
Дата 4.7.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 3
Всего: 5



поищи по этому разделу и еще по j2me - помню это обсуждалось 


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Bulat
Дата 4.7.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 4
Всего: 57



Цитата(last @  4.7.2006,  10:37 Найти цитируемый пост)
а вот как с  package --- ума не приложу  
 
.....Млин за секунду из головы вылетело smile  

ладно как вспомню отпишу......... smile 
  

Это сообщение отредактировал(а) Bulat - 4.7.2006, 19:08


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
djGri
Дата 5.7.2006, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.2.2005

Репутация: 1
Всего: 3



PM MAIL   Вверх
last
Дата 5.7.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.7.2006

Репутация: нет
Всего: нет



Цитата(djGri @ 5.7.2006,  09:35)
Вот нашел кое-что http://java.sun.com/j2se/1.5.0/docs/guide/...PackageDoc.html


Не то это, это апи для JavaDoc, про то как доклеты свои для генерации писать.  Как это можно применить в этом случае, незнаю.

Кстати, про JavaDoc. Если он есть для данного пакета, то список классов можно получить путем анализа листинга директории с JavaDoc этого package (ls -l /java/util  и тд). Такой вот обходной путь  smile , но   понятно неприемлимый. JavaDoc просто может не быть, например.

Уверен, что проще способ должен быть. Браузеры классов в IDE показывают список классов для пакета без всякого JavaDoc. Вот только как?


 

Это сообщение отредактировал(а) last - 5.7.2006, 12:15
PM MAIL   Вверх
djGri
Дата 5.7.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.2.2005

Репутация: 1
Всего: 3



А если так
Код

packageName = packageName.replace(".", File.separatorChar + "");  
File myDir = new File(packageName);
String[] filesInPackage = myDir.list();
 
PM MAIL   Вверх
last
Дата 5.7.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.7.2006

Репутация: нет
Всего: нет



Т.е,  как я понимаю предлагается следующее:

берутся  все *.class  из classpath, из директорий и jar (jar тоже можно рассматривать как запакованное дерево каталогов) и анализирутся пути до корня и имена файлов.

находим в classpath package.jar, к примеру, со следующей структурой

+-
   |
    +com
            |
             +mysite
                         |
                          Super.class

находим рекурсивным перебором Super.class, а путь до него --- будет имя пакета, имеем
com.mysite.Super , запоминаем и так далее

после перебора у нас будет дерево классов, распределенных по пакетам.

Так проблему можно решить, конечно, но придется перебирать весь classpath, долго это будет и не изящно.

Видимо по другому нельзя. Или  можно?
 
PM MAIL   Вверх
Bulat
Дата 6.7.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 4
Всего: 57



djGri, млин, пока освободился опередил. smile 

last, если узнаешь другой способ попроще, дашь знать. smile  


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
LSD
Дата 6.7.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
djGri
Дата 7.7.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 21.2.2005

Репутация: 1
Всего: 3



Для решения этой задачи, пока не существует APIs.
Есть несколько решений, но все они похожие на мое smile
Вот тут http://forum.java.sun.com/thread.jspa?thre...35&tstart=0  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0858 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.