The alternative method using StackWalker (since Java 9):
public static Class<?> getCallerClass(int n) {
try {
List<StackFrame> stack = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).walk(s -> s.limit(n).collect(Collectors.toList()));
StackFrame stackFrame = stack.get(stack.size()-1);
return stackFrame.getDeclaringClass();
} catch (Exception e) {