Есть ли способ получить список методов, которые будут доступны (не обязательно общедоступны) определенным классом? Этот код будет находиться в совершенно другом классе.
Пример:
public class A {
public void methodA1();
protected void methodA2();
void methodA3();
private void methodA4();
}
public class B extends A {
public void methodB1();
protected void methodB2();
private void methodB3();
}
Для класса B
я хотел бы получить:
- все свои методы
-
methodA1
иmethodA2
из классаA
-
methodA3
тогда и только тогда, когда классB
находится в том же пакете, что иA
methodA4
никогда не должен включаться в результаты, поскольку он недоступен классу B
. Чтобы еще раз прояснить, код, который должен найти и вернуть указанные выше методы, будет в совершенно другом классе/пакете.
Теперь Class.getMethods()
возвращает только общедоступные методы и, следовательно, не будет делать то, что я хочу; Class.getDeclaredMethods()
возвращает методы только для текущего класса. Хотя я могу, конечно, использовать последнее и пройти иерархию классов, проверяя правила видимости вручную, я бы предпочел, чтобы там было лучшее решение. Я пропустил что-то очевидное здесь?