Fitur baru antarmuka fungsional bawaan Java 8
Dalam posting blog sebelumnya, ekspresi lambda, kami menyebutkan antarmuka fungsional yang disediakan oleh Java 8. Dalam artikel ini, kami akan memperkenalkan empat antarmuka fungsional paling dasar di Java 8.
Untuk referensi ke metode, secara ketat, antarmuka perlu ditentukan. Tidak peduli bagaimana kami beroperasi, sebenarnya hanya ada empat antarmuka yang mungkin untuk beroperasi.
Java 8 menyediakan paket antarmuka fungsional java.util.function.*, Di mana ada banyak antarmuka fungsional yang dibangun ke dalam java 8. Namun, pada dasarnya dibagi menjadi empat tipe dasar:
Antarmuka fungsional (fungsi)
Mengambil T sebagai input dan R sebagai output, itu juga berisi metode default yang dikombinasikan dengan fungsi lain.
@FunctionInterfacepublic Interface Function <t, r> {r apply (t t);} Kode sampel
public static void main (string [] args) {// di sini kita menggunakan referensi metode java8, antarmuka fungsional fungsional! Function <String, Boolean> function = "Hello Java" :: endswith; System.out.println (function.apply ("java"));} Antarmuka konsumen
Ambil T sebagai input tanpa mengembalikan apa pun, menunjukkan operasi pada satu parameter.
@FunctionInterfacepublic Interface Consumer <T> {void accept (t t);} Kode sampel
kelas testdemo {// metode ini tidak memiliki nilai pengembalian, tetapi ada parameter input public void fun (string str) {system.out.println (str); }} public class testfunctional {public static void main (string [] args) {testDemo demo = new testDemo (); // Antarmuka tipe konsumen, hanya parameter input, tidak ada parameter output konsumen <string> konsumen = demo :: fun; konsumen.accept (""); }}
Pemasok
Tidak ada parameter input, hanya t mengembalikan output
@FunctionInterfacepublic Interface Supplier <T> {t get ();} Kode sampel
TestFunctional kelas publik {public static void main (string [] args) {// antarmuka tipe pemasok, hanya parameter output, tidak ada parameter input! Pemasok <string> pemasok = "Java 8" :: Touppercase; System.out.println (Supplier.get ()); }} Antarmuka Asersi (Predikat)
Mengambil T sebagai input dan mengembalikan boolean sebagai output, antarmuka berisi sejumlah metode default untuk menggabungkan predikat ke dalam logika kompleks lainnya (dan, atau, non).
@FunctionalInterFacepublic Interface Predicate <T> {Boolean test (tt);} Kode sampel
Public Class TestFunctional {public static void main (string [] args) {// Assert tipe antarmuka. Ada parameter input, parameter output adalah predikat boolean <string> predicate = "android" :: equalsignorecase; System.out.println (predicate.test ("android")); }}Oleh karena itu, di Java 8, karena ada empat antarmuka fungsional di atas, umumnya jarang bagi pengguna untuk mendefinisikan antarmuka fungsional baru!
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!