Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mencari Pemanggil Kaedah Java Menggunakan Jejak Tindanan atau Refleksi?

Bagaimanakah Saya Boleh Mencari Pemanggil Kaedah Java Menggunakan Jejak Tindanan atau Refleksi?

Mary-Kate Olsen
Lepaskan: 2024-12-21 18:33:15
asal
669 orang telah melayarinya

How Can I Find the Caller of a Java Method Using Stack Trace or Reflection?

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());
}
Salin selepas log masuk

Pertimbangan

  • Indeks pemanggil dalam surih tindanan boleh berbeza-beza bergantung pada konteks panggilan.
  • Refleksi mungkin tidak tersedia dalam persekitaran tertentu, seperti Android.

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan