Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Reflection
Форум программистов > Системное программирование > Java
tanatos
Вопрос у меня казалось бы простой, но тем не менее прямого ответа в джавадоке я не нашел.
1) Есть имя пакета. По нему нужно найти все классы, находящиеся в данном пакете в classpath.
2) Есть суперкласс и по нему нужно найти всех видимых в classpath подклассов.
Заранее благодарен за ответы.
Kmet
в общем случае не возможно, так как JVM ничего не знает о еще не загруженных классах.
tanatos
Но как-то же это у нее получается!
По сути мне нужен аналог выражения
import my.package.*;
Creo
Не совсем понятна следующая чать вопроса:
Цитата(tanatos @ 19:05:2008, 16:40 ) *
находящиеся в данном пакете в classpath.

Если испольть следующий метод, то по ключу мона вытянуть директорию, где установлена JVM или откуда запускалось приложение и ещё много чего интересного...
System.getProperty(String key);

Посмотреть все ключи и их значения можно например так
public class Test {
    public static void main(String[] args) {
        System.out.println(System.getProperties());
    }
}

Более точное описание вопроса и то что бы вы хотели получить помогло бы ответить на этот вопрос...
Kmet
Цитата(tanatos @ 20:05:2008 - 13:45) *
Но как-то же это у нее получается!
По сути мне нужен аналог выражения
import my.package.*;

Цитата(tanatos @ 20:05:2008 - 13:45) *
Но как-то же это у нее получается!

у кого?
Цитата(tanatos @ 20:05:2008 - 13:45) *
import my.package.*;

это выражение compile-time. да и то в этом случае компилятор не переберает все классы в пакете, используется чутка другой подход. а тебя, как я пологаю надо решение на run-time'ме. А на рантайме классы могут быть подгруженны не только с файловой системы, а например с БД или удаленного сервера как в случае с аплетами или WebStart или еще через какой хитрый класслоадер.
tanatos
Цитата
А на рантайме классы могут быть подгруженны не только с файловой системы, а например с БД или удаленного сервера как в случае с аплетами или WebStart или еще через какой хитрый класслоадер.

Это да. Но подобный механизм реализован во всех приличных ИДЕхах. Вот мне и интересно - там используется механизм файловой системы или поддержка рефлекшена. Почему например можно оплучить все ресурсы пэкэджа с одинаковым именем, но нельзя получить все классы? Как по мне было бы логично иметь метод типа ClassLoader.loadClasses(Package)
Цитата
у кого?

У JVM
Цитата
Более точное описание вопроса и то что бы вы хотели получить помогло бы ответить на этот вопрос...

Нужны не переменные окружения а классы в определенном пакете и/или все видимые подклассы данного класса.

Вобщем-то я уже сделал то что хотел обходным путем (нужна была поддержка плагин лоадинга так чтобы подгрузчик не знал о том какие плагины он загружает), но все равно спасибо за ответы.
Kmet
Цитата(tanatos @ 21:05:2008 - 14:49) *
Это да. Но подобный механизм реализован во всех приличных ИДЕхах. Вот мне и интересно - там используется механизм файловой системы или поддержка рефлекшена.

посмотри сорцы эклипса.
Цитата(tanatos @ 21:05:2008 - 14:49) *
Почему например можно оплучить все ресурсы пэкэджа с одинаковым именем, но нельзя получить все классы? Как по мне было бы логично иметь метод типа ClassLoader.loadClasses(Package)

Если бы хорошо знал как рабоают класслоадеры в ява, понял бы почему. но тема эта весьма обширная.
Цитата(tanatos @ 21:05:2008 - 14:49) *
Вобщем-то я уже сделал то что хотел обходным путем (нужна была поддержка плагин лоадинга так чтобы подгрузчик не знал о том какие плагины он загружает), но все равно спасибо за ответы.

в спецификии jar описан возможный стандартный подход.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.