class Rextester
{
public static void main(String args[])
{
foo();
}
public static void foo ()
{
int intTotalMetodos = Rextester.class.getDeclaredMethods().length;
String sMethodName = new String (Thread.currentThread().getStackTrace()[1].getMethodName());
String sClassName = new String (Thread.currentThread().getStackTrace()[1].getClassName());
System.out.println("Esta clase se llama: "+sClassName+"\n");
System.out.println("Tiene: "+intTotalMetodos+" métodos\n");
System.out.println("Este método se llama: "+sMethodName+"\n");
/*
* Se puede obtener el nombre de métodos
* por orden descendente de llamada
*/
getAllMethods(intTotalMetodos);
}
public static void getAllMethods(int intTotalMetodos)
{
int i;
System.out.println("------------------------------------------\n");
System.out.println("Nombres de métodos por orden descendente: \n");
for( i = 1; i <= intTotalMetodos; i++ ) {
System.out.println("El método "+i+" se llama: "+Thread.currentThread().getStackTrace()[i].
getMethodName());
}
}
}
结果:
Esta clase se llama: Rextester
Tiene: 3 métodos
Este método se llama: foo
------------------------------------------
Nombres de métodos por orden descendente:
El método 1 se llama: getAllMethods
El método 2 se llama: foo
El método 3 se llama: main
getMethodName()
您可以通过从 Class调用来获取方法名称StackTraceElement
。您甚至可以按调用的降序获取方法名称,如示例中对
getAllMethods();
inside的调用所示foo()
:代码:
VER DEMO EN REXTESTER
结果:
是的,您可以使用以下语句获取方法的名称:
现在,参考这个 SO answer,每次执行该函数时,它都会让整个类从该类中获取您正在使用的方法,这可能会导致性能问题,因为它将整个类保存在内存中。如果您只打算在非常特定的场合使用此方法,它不会导致内存问题。
如果您在另一个方法中调用此方法,您将获得当前正在执行的方法的名称:
这是您的示例:
将打印: