是的,通过使用异常获取类名是一个合理的解决方案,但我正在寻找更优雅的东西。
String className = new Exception().getStackTrace()[1].getClassName();
这主要用于记录目的,并确保我的缓存关键字是特定于组件/调用者类的。
答案 0 :(得分:10)
a)无需使用Exception,您可以执行此操作:Thread.currentThread().getStackTrace()
答案 1 :(得分:3)
Thread.currentThread().getStackTrace()
答案 2 :(得分:3)
在Oracle JVM上,您可以使用非标准的sun.reflect.Reflection.getCallerClass(2)。这要快得多,但应该小心使用。 (因为它不是跨平台的,可以在Java版本之间进行更改)