Berfungsi sebagai parameter dalam Java
Dalam Java, bagaimana untuk menghantar fungsi sebagai parameter kepada fungsi lain?
Java 8 dan ke atas
Gunakan Java 8 ungkapan lambda, apabila anda mempunyai kelas atau antara muka (kadangkala dipanggil jenis SAM) dengan hanya satu kaedah abstrak, contohnya:
public interface MyInterface { String doSomething(int param1, String param2); }
maka anda boleh menggunakan ungkapan lambda sebaliknya di mana MyInterface digunakan:
class MyClass { public MyInterface myInterface = (p1, p2) -> { return p2 + p1; }; }
Sebagai contoh, anda boleh Untuk melaksanakan dengan cepat dengan mencipta urutan baharu:
new Thread(() -> someMethod()).start();
dan gunakan sintaks rujukan kaedah untuk menjadikannya lebih ringkas:
new Thread(this::someMethod).start();
Jika tidak menggunakan ungkapan lambda formula, dua contoh terakhir akan kelihatan seperti ini:
new Thread(new Runnable() { someMethod(); }).start();
Jawa Versi pra-8
Corak biasa ialah "membungkus" fungsi di dalam antara muka, seperti Boleh Dipanggil, dan kemudian menghantar Boleh Dipanggil:
public T myMethod(Callable<T> func) { return func.call(); }
Corak ini dipanggil corak arahan.
Ingat bahawa adalah yang terbaik untuk mencipta antara muka untuk tujuan tertentu. Jika anda memilih untuk menggunakan panggilan, gantikan T di atas dengan sebarang jenis nilai pulangan yang anda jangkakan, seperti String.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepasi Fungsi sebagai Parameter di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!