Update ReflectionHelper.java

This commit is contained in:
Tungstend 2022-10-19 21:43:19 +08:00
parent 55e313a562
commit 25d154f83f
1 changed files with 2 additions and 2 deletions

View File

@ -29,14 +29,14 @@ public final class ReflectionHelper {
* @param packageFilter returns false if we consider the given package is internal calls, not the caller * @param packageFilter returns false if we consider the given package is internal calls, not the caller
* @return the caller, method name, source file, line number * @return the caller, method name, source file, line number
*/ */
public static StackTraceElement getCaller(String packageFilter) { public static StackTraceElement getCaller(Predicate<String> packageFilter) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace(); StackTraceElement[] elements = Thread.currentThread().getStackTrace();
// element[0] is Thread.currentThread().getStackTrace() // element[0] is Thread.currentThread().getStackTrace()
// element[1] is ReflectionHelper.getCaller(packageFilter) // element[1] is ReflectionHelper.getCaller(packageFilter)
// so element[2] is caller of this method. // so element[2] is caller of this method.
StackTraceElement caller = elements[2]; StackTraceElement caller = elements[2];
for (int i = 3; i < elements.length; ++i) { for (int i = 3; i < elements.length; ++i) {
if (!StringUtils.substringBeforeLast(elements[i].getClassName(), '.').equals(packageFilter) && if (packageFilter.test(StringUtils.substringBeforeLast(elements[i].getClassName(), '.')) &&
!caller.getClassName().equals(elements[i].getClassName())) !caller.getClassName().equals(elements[i].getClassName()))
return elements[i]; return elements[i];
} }