Получить набор (или коллекцию) всех классов в пакете java.lang

Я пишу компилятор для Java, и хотел бы неявно импортировать java.lang пакет для всех исходных файлов (это то, что делает большинство компиляторов Java, о которых я знаю).

Для этого мне нужно каким-то образом получить набор всех классов (т. Е.Set<Class<?>>) или набор всех квалифицированных имен (т.е. Set<String>) всех классов в пакете.

Я посмотрел на API отражений с этой страницы, но структура моего проекта (и других факторов) делает его менее подходящим кандидатом.

Так что мне интересно, есть ли какой-нибудь другой способ получить такие классы (кроме жесткого кодирования, конечно!)? Дело в том, что java.lang является самым популярным пакетом в Java, предполагает, что должен быть какой-то способ (ы).

1 ответ

Пытаться

    String path = Object.class.getResource("Object.class").getPath().replace("!/java/lang/Object.class", "");
    ZipFile z = new ZipFile(new File(new URI(path)));
    Enumeration<? extends ZipEntry> e =z.entries();
    Set<String> s = new HashSet<String>();
    while(e.hasMoreElements()) {
        String n = e.nextElement().getName();
        if (n.matches("java/lang/\\w+\\.class")) {
            s.add(n);
        }
    }
Другие вопросы по тегам