Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Mencapai Fungsi Penunjuk Fungsi di Jawa?

Bagaimanakah Saya Boleh Mencapai Fungsi Penunjuk Fungsi di Jawa?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 04:27:02630semak imbas

How Can I Achieve Function Pointer Functionality in Java?

Apa yang Perlu Digunakan Daripada Penunjuk Fungsi dalam Java

Dalam bahasa pengaturcaraan Java, penunjuk fungsi, ciri yang membolehkan seseorang menghantar fungsi sebagai hujah kepada fungsi lain, tidak hadir. Walau bagaimanapun, terdapat alternatif untuk mencapai kefungsian yang serupa.

Satu pilihan yang berdaya maju ialah kelas dalaman tanpa nama. Pertimbangkan keperluan untuk mencipta berbilang kaedah yang melakukan operasi yang sama kecuali untuk variasi kecil dalam satu baris kod. Kelas dalaman tanpa nama menawarkan penyelesaian.

Untuk menggunakan kelas dalam tanpa nama, antara muka mesti ditakrifkan, mengisytiharkan kaedah yang akan dihantar masuk. Contohnya, jika kaedah mengambil parameter String dan mengembalikan integer, antara muka akan menyerupai ini:

interface StringFunction {
    int func(String param);
}

Kaedah yang menerima penuding fungsi akan menerima contoh antara muka StringFunction, seperti yang ditunjukkan:

public void takingMethod(StringFunction sf) {
   int i = sf.func("my string");
   // do whatever ...
}

Untuk menggunakan kaedah ini, gunakan dalaman tanpa nama kelas seperti itu:

ref.takingMethod(new StringFunction() {
    public int func(String param) {
        // body
    }
});

Dalam Java 8 dan lebih baru, ungkapan lambda menyediakan alternatif yang lebih ringkas:

ref.takingMethod(param -> bodyExpression);

Ini membenarkan untuk menghantar fungsi sebagai hujah dalam ringkas dan boleh dibaca cara, mencontohi tingkah laku penunjuk fungsi dengan berkesan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Fungsi Penunjuk Fungsi di Jawa?. 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