Отражение 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
0
3
189
0

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