Rumah  >  Artikel  >  Java  >  Bagaimanakah Java Meniru Penunjuk Fungsi untuk Kod Modular?

Bagaimanakah Java Meniru Penunjuk Fungsi untuk Kod Modular?

Susan Sarandon
Susan Sarandonasal
2024-11-19 09:16:02886semak imbas

How Can Java Mimic Function Pointers for Modular Code?

Pengganti Java untuk Penunjuk Fungsi

Ketiadaan penunjuk fungsi Java boleh menghalang penciptaan kod modular yang boleh digunakan semula. Walau bagaimanapun, terdapat penyelesaian: kelas dalaman tanpa nama.

Pertimbangkan keperluan untuk berbilang kaedah yang melaksanakan operasi yang sama kecuali untuk satu baris pengiraan. Sebaik-baiknya, lulus penunjuk fungsi sudah memadai, tetapi Java tidak menyokongnya. Alternatifnya ialah untuk menentukan antara muka dengan fungsi yang diingini sebagai ahli tunggalnya.

Sebagai contoh, untuk mentakrifkan fungsi yang mengambil rentetan dan mengembalikan integer:

interface StringFunction {
    int func(String param);
}

Sekarang, a kaedah yang menerima penuding fungsi boleh mengambil contoh StringFunction:

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

Memanggil kaedah ini akan kelihatan seperti ini:

ref.takingMethod(new StringFunction() {
    public int func(String param) {
        // Implementation for the single changed line
    }
});

Dalam Java 8, ini boleh dipermudahkan lagi menggunakan ungkapan lambda :

ref.takingMethod(param -> {
    // Implementation for the single changed line
});

Dengan menggunakan kelas dalaman tanpa nama atau ungkapan lambda, pengaturcara Java boleh mencapai kefungsian penunjuk fungsi, menawarkan fleksibiliti dan kebolehgunaan semula kod.

Atas ialah kandungan terperinci Bagaimanakah Java Meniru Penunjuk Fungsi untuk Kod Modular?. 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