Есть ли способ получить список методов, которые будут доступны (не обязательно общедоступны) определенным классом? Этот код будет находиться в совершенно другом классе.
Пример:
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() возвращает методы только для текущего класса. Хотя я могу, конечно, использовать последнее и пройти иерархию классов, проверяя правила видимости вручную, я бы предпочел, чтобы там было лучшее решение. Я пропустил что-то очевидное здесь?