Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mendapatkan Nama Kaedah yang sedang Dilaksanakan di 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!