Получить набор (или коллекцию) всех классов в пакете 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);
}
}