Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Reflection без Java


Автор: Larrr 5.8.2006, 11:07
Проблема следующая - имеется папка, скажем C:/Classes, В ней находятся классы в с расширением java(можно class если очень надо). Моя задача написать GUI-утилитку, которая бы читала поля классов в выбранной папке, отображала их тип и название. Как это делается - возможно ли прочитать такую информацию о классе извне?

Автор: powerOn 5.8.2006, 12:49
Если файлы .class, то тогда нужно написать свой classloader (у нас в FAQ описанно как), с помощью которого классы загружать из файлов, а потом рефлексией из них информацию доставать. 

Автор: allex 5.8.2006, 13:17
Есть ли причины не пользоваться Java reflection при этом?

Автор: LSD 5.8.2006, 14:27
Если там исходники (java), то надо писать свой парсер, или поискать http://www.antlr.org/. Если нет необходимости проверять на синтаксическую корректность, то можно обойтись регекспами.

Если там классы (class), то надо анализировать структуру, http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html.

Автор: Larrr 5.8.2006, 14:59
Цитата(allex @ 5.8.2006,  13:17)
Есть ли причины не пользоваться Java reflection при этом?

Есть:
1) заранее неизвестно какая будет папка - ее загружает пользователь уже в процессе работы программы
2) классы, поля который загружаются не являются частью проекты

Добавлено @ 15:00 
Цитата(LSD @ 5.8.2006,  14:27)
Если там исходники (java), то надо писать свой парсер, или поискать http://www.antlr.org/. Если нет необходимости проверять на синтаксическую корректность, то можно обойтись регекспами.

Если там классы (class), то надо анализировать структуру, http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html.

Как анализировать? Вручную?  smile 
Можно организовать и скомпиленные исходники - то бишь class files.

Автор: LSD 5.8.2006, 15:20
Цитата(Larrr @  5.8.2006,  15:59 Найти цитируемый пост)
1) заранее неизвестно какая будет папка - ее загружает пользователь уже в процессе работы программы
2) классы, поля который загружаются не являются частью проекты

Это все не проблема, можно взять URLCLassLoader скормить ему URL папки с классами и все.

Цитата(Larrr @  5.8.2006,  15:59 Найти цитируемый пост)
Как анализировать? Вручную?

Можно поискать готовое решение, но рефлексия все равно проще (при соблюдении некоторых но).

Автор: Larrr 5.8.2006, 17:15
Цитата(LSD @  5.8.2006,  15:20 Найти цитируемый пост)
Это все не проблема, можно взять URLCLassLoader скормить ему URL папки с классами и все.


А вот это может быть как раз то что мне нужно! Спасибо, я посмотрю про этот Loader.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)