例如,我想要这样的代码:
class Class1
{
Class2.print("Hello there.");
}
class Class2
{
public void print(String message)
{
System.out.println("[method caller's name] : " + message);
}
}
Class1将调用Class2的print方法,该方法应打印其调用方的名称,后跟消息。
答案 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
但我想你应该避免这样的事情。因为创建新的异常对象需要付出代价。
相反,你应该将调用者作为打印函数参数传递。