Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mencari Pemanggil Kaedah Java Menggunakan Jejak Tindanan atau Refleksi?
Mencari Pemanggil Kaedah menggunakan Stacktrace atau Reflection
Di Java, penentuan pemanggil kaedah boleh dicapai melalui stacktrace atau refleksi .
Menggunakan Stacktrace
Kaedah Thread.currentThread().getStackTrace() mengembalikan tatasusunan objek StackTraceElement, yang mewakili unsur surih tindanan bagi benang semasa. Elemen terakhir dalam tatasusunan mewakili bahagian bawah tindanan, atau kaedah yang paling kurang terkini.
Setiap objek StackTraceElement menyediakan akses kepada nama kelas (getClassName()), nama fail (getFileName()), baris nombor (getLineNumber()), dan nama kaedah (getMethodName()) bagi permohonan kaedah yang sepadan. Untuk menentukan pemanggil, anda biasanya boleh menggunakan elemen pada indeks 1 atau 2 tatasusunan StackTraceElement.
Menggunakan Refleksi
Reflection menawarkan pendekatan lain untuk mengenal pasti pemanggil. Kaedah Class#getDeclaringClass() mengembalikan kelas yang mengisytiharkan kaedah yang ditentukan. Ini boleh berguna jika anda ingin mendapatkan kelas kaedah panggilan tanpa mengira surih tindanan semasa.
Contoh
Berikut ialah contoh menggunakan stacktrace untuk mencari pemanggil daripada arus kaedah:
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); if (stackTraceElements.length > 1) { StackTraceElement caller = stackTraceElements[1]; System.out.println("Caller: " + caller.getClassName() + "." + caller.getMethodName()); }
Pertimbangan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Pemanggil Kaedah Java Menggunakan Jejak Tindanan atau Refleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!