Да, есть. Это, однако, утомительная и дорогая работа. Вам нужно пролистать все файлы классов и все файлы JAR с помощью ClassLoader#getResources()
и снимка java.io.File
и загрузить все его классы с помощью Class#forName()
и, наконец, проверьте, существует ли метод, по Class#getMethod()
.
Однако, есть сторонние API, которые могут взять утомительную работу из рук, но это все еще дорого, потому что загрузка класса вызовет выполнение его static
инициализаторов.
Более чистым способом является использование annotations
и аннотирование соответствующих методов, а затем использование библиотек, которые ищут классы / методы / поля на основе аннотаций, таких как Google Reflections .
С другой стороны, если полное имя пакета или имя файла JAR известно заранее, тогда работа будет менее утомительной и дорогой (не нужно делать что-либо рекурсивно или загружать все классы всего пути к классам) .
Обновление: Я помню, я когда-либо писал пример кода для достижения чего-то подобного, вы можете найти его здесь . Это хорошо для начала, вам нужно только немного изменить его, чтобы проверить метод.