Отражение Java: доступ к методам классов, расширяющих класс

Я разрабатываю интерпретатор на Java, и для облегчения расширения я использую некоторую рефлексию во время запуска, чтобы функции можно было вызывать только по их имени.

Пока у меня была следующая структура классов:

A extends B
B extends C
C extends D

И для доступа ко ВСЕМ методам, определенным в любом из тех классов, которые я использовал:

Method method = A.class.getMethod("theExpectedFunctionName");

Это работает.

Однако теперь, когда проект вырос, оказалось, что было бы намного удобнее иметь такую ​​структуру классов, как:

B extends A
C extends A
D extends A

Но теперь функция getMethod, естественно, больше так не работает. Есть ли способ получить все методы, которые находятся в дочерних классах A?

Заранее огромное спасибо!

A не имеет возможности узнать о методах классов, которые его расширяют. Если вы хотите получить метод от B, вам нужен B.class.getMethod, а не A.class.getMethod.
khelwood 31.10.2018 13:00

Хм, жаль, если это единственное решение ...

DragonGamer 31.10.2018 13:03

Решение, отнюдь не хорошее, состоит в том, чтобы просканировать путь к классам и протестировать каждый класс по методу Class.isAssignableFrom. Затем для каждого класса, прошедшего тест, возьмите его методы и поместите их в список.

user10527814 31.10.2018 13:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
189
0

Другие вопросы по теме