如何在不向该方法传递任何变量的情况下找出哪个类调用了我的方法? 假设我们有这样的事情:
Class A{}
Class B{}
Class C{
public void method1{}
System.out.print("Class A or B called me");
}
假设 A 类的实例调用 C 类的实例,B 类的实例也是如此。当 A 类调用 C 类的 method1 方法时,我希望它打印类似“A 类调用我”的内容,而当 B 类调用时调用它来打印“B 类调用我”。
最佳答案
没有真正简单的方法可以做到这一点,因为通常情况下,方法不需要也不应该关心从哪里调用它。如果您编写的方法根据调用位置的不同而表现不同,那么您的程序很快就会变得一团糟。
但是,这里有一个例子:
public class Prut {
public static void main(String[] args) {
example();
}
public static void example() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
StackTraceElement element = stackTrace[2];
System.out.println("I was called by a method named: " + element.getMethodName());
System.out.println("That method is in class: " + element.getClassName());
}
}
关于java - 如何找出在java中调用方法的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161158/