Хакерное решение - sun.reflect.Reflection.getCallerClass
.
public void foo() {
Class> caller = sun.reflect.Reflection.getCallerClass();
// ...
}
Это хаки, потому что вы должны убедиться, что класс, вызывающий Reflection.getCallerClass()
, загружен в bootstrap ClassLoader для аннотации @CallerSensitive
(которую getCallerClass
помечен) для работы. Таким образом, это, вероятно, не лучшее решение для проекта, если только ваш проект не использует агент Java , чтобы добавить ваши классы в поиск начальной загрузки ClassLoader.