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
* @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();
// element[0] is Thread.currentThread().getStackTrace()
// element[1] is ReflectionHelper.getCaller(packageFilter)
// so element[2] is caller of this method.
StackTraceElement caller = elements[2];
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()))
return elements[i];
}