有没有办法获得给定类可以访问(不一定是公共)的方法列表?有问题的代码将在一个完全不同的类中.
例:
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();
}
Run Code Online (Sandbox Code Playgroud)
上课B我想得到:
methodA1并methodA2从类AmethodA3当且仅当类B与包在同一个包中时AmethodA4永远不应该包括在结果中,因为它不能被类访问B.为了再次澄清,需要查找和返回上述方法的代码将在完全不同的类/包中.
现在,Class.getMethods()只返回公共方法,因此不会做我想要的; Class.getDeclaredMethods()只返回当前类的方法.虽然我当然可以使用后者并且可以手动检查类层次结构来检查可见性规则,但是如果有更好的解决方案,我宁愿不这样做.我在这里错过了一些明显的东西吗?
我正在尝试读取一个java文件,并在控制台中显示包,类和方法名称.这样的事情:
文件:Test.java
package tspec.test;
public class Test {
public void addTest () {}
public void deleteTest () {}
}
Run Code Online (Sandbox Code Playgroud)
输出:
package name: tspec.test
class name: Test
method name:
addTest
deleteTest
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)