Можно создать дубликат:
Can you find all classes in a package using reflection?Как узнать классы пакета в java?
Я полагаю имя пакета в виде строки:
String pkgName = "com.forat.web.servlets";
Как знать типы в этом пакете?
Можно создать дубликат:
Can you find all classes in a package using reflection?Как узнать классы пакета в java?
Я полагаю имя пакета в виде строки:
String pkgName = "com.forat.web.servlets";
Как знать типы в этом пакете?
Это невозможно в полном объеме. Если ваши классы хранятся в каталоге или файле JAR, вы можете посмотреть его содержимое, но механизм classloader настолько гибкий, что вопрос «какие классы находятся в этом пакете» просто не имеет смысла - можно написать загрузчик классов, который возвращает класс для любой имя класса, о котором вы просите.
О, давай, это имеет смысл, даже невозможно всегда отвечать на вопрос. – doublep
Можете ли вы предоставить более подробную информацию, например, какую среду? Отдельное приложение, webapp на сервере приложений. Где загружаются классы? JAR, отдельные файлы в файловой системе, загрузчик сетевого класса и т. Д.
Нет простого ответа, просто потому, что нет простого определения пакета. Пакет можно распространять по нескольким банкам, загрузчикам нескольких классов, а в случае загрузчиков сетевого класса классы существуют на другом компьютере.
Наконец, вы хотите просто рассмотреть классы, загруженные в виртуальную машину или все классы, присутствующие в пути к классам?
EDIT: Смотрите также этот related question.
Эти два ответа объяснить методы, которые должны охватывать много практических проблем:
е у вас есть файл .jar что вы хотите получить файлы .class, вы можете использовать следующее:
java.util.jar.JarEntry
java.net.JarURLConnection
создан с помощью java.net.URL
.
URL-адрес в этом случае имя пакета в этом случае: com.forat.web.servlets
Пример
(Примечание: игнорирует обработка исключений)
// Get the "things" that are in the .jar
Enumeration<JarEntry> jarEntries =
((JarURLConnection)urlToJar.openConnection()).getJarFile().entries();
while(jarEntries.hasMoreElements())
{
String entry = jarEntries.nextElement().getName();
if (entry.endsWith(".class"))
{
// TODO: Remove "." from result.
// Here is the first of the classes in the .servlets location
Class.forName(entry);
}
}
Дубликат http: // stackoverf low.com/questions/520328/can-you-find-all-classes-in-a-package-using-reflection (или, по крайней мере, очень близко) – Jonik