有没有办法获取调用第二个方法的源类/方法的名称?

时间:2012-01-09 22:21:49

标签: java

例如,我想要这样的代码:

class Class1
{
    Class2.print("Hello there.");
}

class Class2
{
    public void print(String message)
    {
        System.out.println("[method caller's name] : " + message);
    }
}

Class1将调用Class2的print方法,该方法应打印其调用方的名称,后跟消息。

3 个答案:

答案 0 :(得分:3)

您可以使用Thread.getCurrentThread().getStackTrace()方法。这将返回一个StackTraceElement个实例数组,您可以在其中询问方法名称或类名称。

这类似于Rajendran T链接的响应,但不会创建异常来获取堆栈跟踪

答案 1 :(得分:0)

也许这样做

class Class1{
    public void doSomething(){
        Class2.print(this,"Hello there.");
    }
}

class Class2
{
    public static void print(Class1 caller, String message)
    {
        System.out.println("["+ caller +"] : " + message);
    }
}

答案 2 :(得分:-1)

可能会有所帮助。

http://www.artima.com/forums/flat.jsp?forum=1&thread=1451

但我想你应该避免这样的事情。因为创建新的异常对象需要付出代价。

相反,你应该将调用者作为打印函数参数传递。