تدرس هذه المقالة بشكل أساسي المحتوى ذي الصلة لـ StackTraceElement للحصول على معلومات مكدس استدعاء الطريقة ، حيث أن المقدمة المفصلة والأمثلة هي كما يلي.
StackTrace (مسار المكدس) يخزن المعلومات على مكدس استدعاء الطريقة. PrintStackTrace () شائعة الاستخدام في معالجة الاستثناء هي طباعة معلومات المكدس بشكل أساسي.
يمثل StackTraceElement كائن طريقة في StackTrace (مسار المكدس) ، وتتضمن خصائصه اسم الفئة للطريقة واسم الطريقة واسم الملف وعدد الأسطر المسمى.
تنفذ الفئة النهائية من الفئة النهائية التي تنفذها java.io.serializable {// عادةً ما تم تهيئتها بواسطة VM (المُنشئ العام المضافة في 1.5).يتم تعريف StackTraceElement على أنه نهائي ، مما يدل على أنه لا يُسمح له بالوراثة على أنها فئة Java Basic.
هناك طريقتان للحصول على StackTraceElement ، وكلاهما يعيد مجموعة StackTraceElement ، وهي معلومات هذه المكدس.
1. Thread.CurrentThread ().
2. جديد رمي (). getStackTrace ()
يحتوي مجموعة StackTraceElement على محتوى StackTrace (مسار المكدس). من خلال اجتيازها ، يمكنك الحصول على عملية الاتصال بين الأساليب ، أي أنه يمكنك الحصول على الطريقة الحالية واسم طريقة المتصل ، وعدد خطوط الاتصال والمعلومات الأخرى.
الفئة العامة testClass {public static void main (string [] args) {new TestClass (). methoda () ؛} private void methoda () {system.out.println ("-------------------------------") ؛ methodb () ؛} private void methodb () {System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {StackTraceElement stackTraceElement = elements [i] ؛ string className = stackTraceElement.getClassName () ؛ String methodName = stackTraceElement.getMethodName () ؛ string fileName = stackTraceElement.getFilename () i = "+i+" ، filename = "+filename+" ، className = "+className+" ، methodName = "+methodname+" ، linenumber = "+linenumber) ؛}}}1. يمكننا تغليف مكتبة سجل. عند طباعة السجل المستهدف ، يمكننا أيضًا طباعة عدد الخطوط التي يوجد فيها السجل من خلال مكدس الاتصال هذا. وبهذه الطريقة ، يمكننا تحديد موقع خط إخراج السجل بسرعة ، ولم يعد البحث على مستوى العالم للبحث.
public static void d (tag string ، string msg ، object ... params) {StackTraceElement targetStackTraceElement = getTargetStackTraceElement () ؛ log.d (tag ، "(" + targetStackTraceElement.getFilename () + ":" + TargetStackTraceElement.getLinenumber () + ")") ؛ log.d (tag ، string.format (msg ، params)) ؛}2. إذا كتبنا SDK ونأمل أن يتم استدعاء طريقة معينة في موضع ثابت ، فيمكننا أيضًا التحقق من ذلك عندما يتم استدعاء هذه الطريقة لمعرفة ما إذا كان موضع استدعاء هذه الطريقة صحيحًا.
على سبيل المثال ، يجب تنفيذها في النشاط.
الفئة العامة pvsdk {public static void onresume () {stackTraceElement [] stackTrace = thread.currentTraceRead (). {boolean issabilityfromclass = class.forname (className) .ISAsasSignableFrom (Activity.class) ؛ if (ensigableFromClass && "onResume" .equals (methodname)) {result = true ؛ Activity.onresume ") ؛}}3. عندما نقوم بإجراء تحليل رمز المصدر ، إذا أردنا تحليل عملية تنفيذ الرمز بأكمله ، فيمكننا الحصول على المعلومات من مكدس الطباعة. هذا مفيد للغاية عند تحليل رمز المصدر.
ما ورد أعلاه هو كل التفسير المفصل لهذه المقالة حول مثال معلومات مكدس CackTraceElement ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!