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