Dla każdego, kto się zastanawia, indeks w getStackTrace()[3]
metodzie sygnalizuje liczbę wątków pokonywanych przez linię wyzwalającą, aż do faktycznej metody .getStackTrace () z wyłączeniem linii wykonawczej.
Oznacza to, że jeśli Thread.currentThread().getStackTrace()[X].getLineNumber();
wiersz jest wykonywany z 3 metod zagnieżdżonych powyżej , numer indeksu musi wynosić 3 .
Przykład:
Pierwsza warstwa
private static String message(String TAG, String msg) {
int lineNumber = Thread.currentThread().getStackTrace()[3].getLineNumber();
return ".(" + TAG + ".java:"+ lineNumber +")" + " " + msg;
}
Druga warstwa
private static void print(String s) {
System.out.println(s);
}
Trzecia warstwa
public static void normal(
String TAG,
String message
) {
print(
message(
TAG,
message
)
);
}
Wykonywanie linii:
Print.normal(TAG, "StatelessDispatcher");
Jako osoba, która nie otrzymała żadnego formalnego wykształcenia w zakresie IT, otworzyła umysł na temat działania kompilatorów.