有没有一种方法可以获取一个类可以访问的方法列表(不一定是public)?涉及到的代码会在一个完全不同的类中。
例如:
例如:
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
,我想获得以下内容:
- 所有自己的方法
- 类
A
中的methodA1
和methodA2
- 仅当类
B
与A
在同一个包中时,才获取methodA3
methodA4
永远不应包含在结果中,因为它对类B
是不可访问的。再次澄清,需要查找并返回上述方法的代码将位于完全不同的类/包中。
现在,Class.getMethods()
仅返回公共方法,因此无法满足我的要求;Class.getDeclaredMethods()
仅返回当前类的方法。虽然我可以使用后者并向上遍历类层次结构来手动检查可见性规则,但如果有更好的解决方案,我宁愿不这样做。我是否漏掉了一些明显的东西?
B
实例可以调用的所有方法。正如我所说,我可以编写代码来实现这一点(类似于您发布的内容加上一些if语句来检查可访问性),但我想知道是否有更好的方法。 - ChssPly76