java - 如何找出在java中调用方法的类?

标签 java class

如何在不向该方法传递任何变量的情况下找出哪个类调用了我的方法? 假设我们有这样的事情:

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/

相关文章:

c# - 避免多次 try catch

java - 有没有一种聪明的方法来编写固定长度的平面文件?

css - Blueprint 的最后一个类是否存在已知问题?

java - 在 Java 中编写 unicode 字符?

java - Selenium 网络驱动程序 : Unable to access elements of a drop down list (un-ordered list)

PHP:使用同名方法处理特征

c++ - 这个类(class)的人数是多少?为什么?

javascript - 如何将一个类实例插入另一个类的私有(private)数组中?

java - 自动获取代理

java - 简单快速的 JTree 单元格编辑器