Artikel ini terutama mempelajari konten yang relevan dari StacktraceElement untuk mendapatkan metode penumpukan panggilan, sebagai pengantar dan contoh terperinci adalah sebagai berikut.
Stacktrace (Stack Track) Menyimpan informasi tentang Stack Call Metode. PrintStackTrace () yang biasa digunakan dalam pemrosesan pengecualian pada dasarnya mencetak informasi tumpukan dari panggilan pengecualian.
StackTraceElement mewakili objek metode di Stacktrace (trek stack), dan propertinya termasuk nama kelas metode, nama metode, nama file, dan jumlah baris yang disebut.
Kelas Akhir Publik StacktraceElement mengimplementasikan java.io.serializable {// biasanya diinisialisasi oleh VM (konstruktor publik ditambahkan dalam 1.5) Private String DeclareClass; Private String MethodName; Private String FileName; Private Int Linenumber;}StacktraceElement didefinisikan sebagai final, yang menunjukkan bahwa tidak diizinkan diwarisi sebagai kelas dasar Java.
Ada dua cara untuk mendapatkan StacktraceElement, yang keduanya mengembalikan array StacktraceElement, yang merupakan informasi dari tumpukan ini.
1. Thread.currentThread (). GetStackTrace ()
2. New Throwable (). GetStackTrace ()
Array StacktraceElement berisi konten Stacktrace (trek stack). Dengan melintasi itu, Anda bisa mendapatkan proses panggilan antara metode, yaitu, Anda bisa mendapatkan metode saat ini dan nama metode peneleponnya, jumlah saluran panggilan dan informasi lainnya.
Public Class TestClass {public static void main (string [] args) {new testclass (). methoda ();} private void methoda () {System.out.println ("-----------------------------------"); MethodB ();} Private Void Private methodB(){System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {StackTraceElement StackTraceElement = Elements [i]; String className = stacktraceElement.getClassName (); string methodName = stacktraceElement.getMethodname (); string filename = stacktraceElement.getFileName (); int linenumber = stacktraceElement. Array Subscript i = "+i+", fileName = "+fileName+", className = "+className+", methodName = "+MethodName+", linenumber = "+linenumber);}}}1. Kita dapat merangkum perpustakaan log. Saat mencetak log target, kami juga dapat mencetak jumlah baris di mana log berada melalui tumpukan panggilan ini. Dengan cara ini, kita dapat dengan cepat menemukan baris output log, dan tidak lagi mencari secara global untuk mencari.
public static void d (tag string, string msg, objek ... params) {stacktraceElement targetstacktraceElement = getTargetStackTraceElement (); Log.d (tag, "(" + targetStackTraceElement.getFileName () + ":" + targetstackTraceElement.getlinEnumber () + ")"); Log.d (tag, string.format (msg, params));}2. Jika kita menulis SDK dan berharap bahwa metode tertentu akan dipanggil dalam posisi tetap, kita juga dapat memeriksa kapan metode ini dipanggil untuk melihat apakah posisi panggilan metode ini benar.
Misalnya, itu harus dieksekusi dalam aktivitas.
Public Class PVSDK {public static void onResume () {stacktraceElement [] stacktrace = thread.currentThread (). getStackTrace (); boolean hasil = false; for (stacktraceElement stacktraceElement: stacktrace) {string methodName = stacktraceElement. StackTraceElement.getClassName (); coba {boolean ditugaskanFromClass = class.forname (className) .IsassignableFrom (Activity.class); if (ditugaskanFromClass && "OnResume" .Equals (MethodName)) {result = true; break;}}}}}}} {rancangan classname) {true {{rancangan classname) RunimeException ("pvsdk.onresume harus di aktivitas.onresume");}}3. Ketika kami melakukan analisis kode sumber, jika kami ingin menganalisis proses eksekusi seluruh kode, kami dapat memperoleh informasi dari tumpukan pencetakan. Ini cukup berguna saat menganalisis kode sumber.
Di atas adalah semua penjelasan terperinci dari artikel ini tentang contoh StackTraceElement Metode Call Stack Information Contoh , saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!