private static final String FQCN = Util.class.getName();
StackTraceElement[] stack = new Throwable().getStackTrace();
String sourceClassName = null;
String sourceMethodName = null;
boolean found = false;
for (StackTraceElement element : stack) {
String className = element.getClassName();
if (FQCN.equals(className)) {
found = true;
} else if (found) {
sourceClassName = className;
sourceMethodName = element.getMethodName();
break;
}
}
setSourceClassName(sourceClassName);
setSourceMethodName(sourceMethodName);
跟
StackTraceElement[] stack = new Throwable().getStackTrace();
String sourceClassName = null;
String sourceMethodName = null;
for (StackTraceElement element : stack) {
String className = element.getClassName();
if (FQCN.equals(className)) {
sourceClassName = className;
sourceMethodName = element.getMethodName();
break;
}
}
setSourceClassName(sourceClassName);
setSourceMethodName(sourceMethodName);
這兩段代碼在意義上有什么區(qū)別?第一段代碼,如果只有當前類的話,不永遠進不了第二個判斷里面,這樣有做的意義在哪里?
1 回答

至尊寶的傳說
TA貢獻1789條經驗 獲得超10個贊
第一段是找FQCN的下一個StackTraceElement的class,
第二段是找FQCN的class。
第一段的邏輯用于查找最后一次調用FQCN方法的是誰。
添加回答
舉報
0/150
提交
取消