在Java中使用反射显示类的简单方法名称

时间:2018-06-21 04:27:39

标签: java methods reflection

所以我有这堂课

class version_1{
    public int add(int n,int m){
            return n+m;
     }
     public int subtract(int n,int m){
            return n-m;
     }
 }    

在我的主类中,我尝试使用

仅显示方法名称
Class<?> c = Class.forName("version_1"); 
Method m[]=c.getDeclaredMethods();
for(int i=0;i<m.length;i++){
    System.out.println(m[i].toString());
}

问题是它显示
public int version_1.add(int,int)
public int version_1.subtract(int,int)
是否有任何功能可以显示
添加
减去

1 个答案:

答案 0 :(得分:0)

您可以这样获得String:

Car.class.getDeclaredMethods()[0].getName();

这是针对您的类中的单个方法的情况。如果要遍历所有声明的方法,则必须遍历Car.class.getDeclaredMethods():

返回的数组
for (Method method : Car.class.getDeclaredMethods()) {
    String name = method.getName();
}

如果要查看所有这些内容,则应使用getDeclaredMethods()getMethods()将仅返回公共方法。

最后,如果您想查看当前正在执行的方法的名称,则应使用以下代码:

Thread.currentThread().getStackTrace()[1].getMethodName();

这将获取当前线程的堆栈跟踪,并在其顶部返回方法的名称。