gpt4 book ai didi

java - 我如何知道调用我类(class)的类(class)名称?我不需要被调用者提供有关其类别的任何信息

转载 作者:行者123 更新时间:2023-12-02 01:49:51 26 4
gpt4 key购买 nike

我需要对此的建议

 class A{
B b;
}

Class B{
P String something();
}

 class test{
B b = new B();
b.something();
}

something()

必须返回 cal-lee 类的名称就像如果有人调用我(叫名字)我应该知道他的名字。

最佳答案

解决方案是以编程方式生成堆栈跟踪:

private static String getCallerName() {
StackTraceElement[] stElements = Thread.currentThread().getStackTrace();
for (int i=1; i<stElements.length; i++) {
StackTraceElement ste = stElements[i];
if (!ste.getClassName().equals("B") && ste.getClassName().indexOf("java.lang.Thread")!=0) {
return ste.getClassName();
// you could also use ste.getMethodName() or ste.getLineNumber()
}
}
return null;
}

您可以像这样使用它,例如:

public void something() {
System.out.println("called by " + getCallerName());
}

关于java - 我如何知道调用我类(class)的类(class)名称?我不需要被调用者提供有关其类别的任何信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com