Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mendapatkan Nama Kaedah yang sedang Dilaksanakan di Java?

Bagaimanakah Saya Boleh Mendapatkan Nama Kaedah yang sedang Dilaksanakan di Java?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 08:42:10661semak imbas

How Can I Get the Name of the Currently Executing Method in Java?

Cara Mendapatkan Nama Kaedah Semasa dalam Java

Mendapatkan semula nama kaedah yang sedang dilaksanakan boleh menjadi penyahpepijatan atau pengelogan yang berguna bantuan. Walaupun Java tidak menyediakan kaedah langsung untuk ini, terdapat helah bijak yang boleh digunakan.

Kelas Dalaman Tanpa Nama dan Refleksi

Helah itu melibatkan mencipta kelas dalaman tanpa nama dan menggunakan refleksi untuk mengakses kaedah lampirannya. Kod berikut menunjukkan teknik ini:

String name = new Object() {}.getClass().getEnclosingMethod().getName();

Kod ini mencipta kelas dalaman tanpa nama dan mendapatkan semula kaedah lampirannya menggunakan getEnclosingMethod(). Nama kaedah yang disertakan kemudiannya diperoleh menggunakan getName().

Pertimbangan Prestasi

Semasa teknik ini berfungsi, ia datang dengan implikasi prestasi tertentu. Setiap seruan mencetuskan penciptaan kelas dalaman tanpa nama dan contoh objek yang tidak digunakan. Ini boleh memperkenalkan overhed yang ketara, terutamanya dalam senario di mana helah ini kerap digunakan.

Maklumat Nyahpepijat Dipertingkat

Walaupun pertimbangan prestasi, teknik ini menawarkan kelebihan. Kaedah getEnclosingMethod() mengembalikan objek java.lang.reflect.Method, yang menyediakan akses kepada maklumat tambahan tentang kaedah tersebut, seperti anotasi dan nama parameter. Ini membolehkan untuk membezakan antara kaedah dengan nama yang sama dan senario beban lampau.

Pertimbangan Keselamatan

Perlu diperhatikan bahawa menurut JavaDoc getEnclosingMethod(), teknik ini harus tidak membuang SecurityException kerana kelas dalaman dimuatkan menggunakan pemuat kelas yang sama. Oleh itu, adalah tidak perlu untuk menyemak syarat akses walaupun pengurus keselamatan hadir.

Penggunaan untuk Pembina

Adalah penting untuk diingat bahawa getEnclosingMethod() dimaksudkan untuk mendapatkan maklumat tentang kaedah, bukan pembina. Untuk pembina, getEnclosingConstructor() harus digunakan. Tambahan pula, getEnclosingMethod() mengembalikan null untuk blok kod di luar kaedah yang dinamakan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Kaedah yang sedang Dilaksanakan di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn