Java 如何获取调用静态方法的类和方法?
我有Java 如何获取调用静态方法的类和方法?,java,Java,我有类X,其中有一个名为doStuff()的static方法,我还有几个其他类,它们的方法出于某种原因调用doStuff()。例如,是否有一种方法可以在doStuff()中使用print方法来打印调用它的方法和类?是:new Throwable()。getStackTrace()返回StackTraceElement的数组。索引号1是您的调用者。是:new Throwable()。getStackTrace()返回StackTraceElement的数组。索引编号1是您的呼叫者。您不需要强制执行
类X
,其中有一个名为doStuff()
的static
方法,我还有几个其他类,它们的方法出于某种原因调用doStuff()
。例如,是否有一种方法可以在doStuff()
中使用print方法来打印调用它的方法和类?是:new Throwable()。getStackTrace()
返回StackTraceElement
的数组。索引号1是您的调用者。是:new Throwable()。getStackTrace()
返回StackTraceElement的数组。索引编号1是您的呼叫者。您不需要强制执行异常。请勾选类似问题:
您不需要强制执行异常。请勾选类似问题:
/**
*0个转储线程
* 1 getStackTrace
* 2 getCallingMethodName
* 3[调用方法]
*
*@返回
*/
私有字符串getCallingMethodName(){
返回Thread.currentThread().getStackTrace()[3].getMethodName();
}
/**
*0个转储线程
* 1 getStackTrace
* 2 getCallingMethodName
* 3[调用方法]
*
*@返回
*/
私有字符串getCallingMethodName(){
返回Thread.currentThread().getStackTrace()[3].getMethodName();
}
您可以使用以下方法获取调用方类:
package test;
class TestCaller {
public static void meth() {
System.out.println("Called by class: " + sun.reflect.Reflection.getCallerClass(2));
}
}
public class Main {
public static void main(String[] args) {
TestCaller.meth();
}
}
输出:“被类调用:class test.Main”您可以使用以下方法获取调用方类:
package test;
class TestCaller {
public static void meth() {
System.out.println("Called by class: " + sun.reflect.Reflection.getCallerClass(2));
}
}
public class Main {
public static void main(String[] args) {
TestCaller.meth();
}
}
输出:“由class:class test.Main调用”+1:OrThread.currentThread().getStackTrace()
谢谢,但我使用的索引是3。索引1给出了类A的名称和doStuff()。+1:OrThread.currentThread().getStackTrace()
谢谢,但我使用的索引是3。索引1给出了类A和doStuff()的名称。请不要这样做!(调试可能是个例外,但即使有测试也可能更好。)请不要这样做!(调试可能是个例外,但即使有测试也可能更好。)