Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 24226|Jawab: 1

[Sumber] Penjelasan rinci tentang antarmuka fungsional umum (delegasi) di Java

[Salin tautan]
Diposting pada 16/09/2021 09.28.21 | | | |
API JDK 1.8 mencakup banyak antarmuka fungsional bawaan, seperti antarmuka Comparator atau Runnable yang biasa digunakan di Java lama, yang menambahkan anotasi @FunctionalInterface sehingga dapat digunakan pada lambda. Sekarang, mari kita benar-benar memahaminya dari masuknya fungsi umum di Function.

Namajenisdeskripsi
KonsumenKonsumen< T >Menerima objek T, tidak mengembalikan nilai
PredikatPredikat< T >Menerima objek T dan mengembalikan boolean
FungsiFungsi< T, R >Menerima objek T dan mengembalikan objek R
PemasokPemasok< T >Berikan objek T (misalnya tanaman) tanpa menerima nilai
Operator UnaryOperatorOperator UnaryOperatorMenerima objek T dan mengembalikan objek T
Operator BinerOperator BinerMenerima dua objek T dan mengembalikan objek T


Antarmuka yang diberi label sebagai FunctionalInterface disebut antarmuka fungsional, yang hanya dapat memiliki satu metode kustom, tetapi dapat menyertakan metode yang diwarisi dari kelas objek. Jika antarmuka hanya memiliki satu metode, kompiler akan berpikir bahwa itu adalah antarmuka fungsional. Apakah itu antarmuka fungsional atau bukan, poin-poin berikut perlu diperhatikan:


  • Anotasi hanya dapat ditandai pada antarmuka dengan "Hanya ada satu metode abstrak".
  • Metode statis dan default di antarmuka JDK8 bukanlah metode abstrak.
  • Antarmuka mewarisi java.lang.Object secara default, jadi jika antarmuka menunjukkan bahwa deklarasi menggantikan metode di Object, itu tidak dianggap sebagai metode abstrak.
  • Anotasi tidak diperlukan, dan jika antarmuka memenuhi definisi "antarmuka fungsional", itu tidak berpengaruh apakah anotasi ditambahkan atau tidak. Ditambah anotasi memungkinkan kompiler untuk memeriksa dengan lebih baik. Jika Anda menulis antarmuka yang tidak berfungsi, tetapi menambahkan @FunctionInterface, kompiler akan melaporkan kesalahan.
  • Mendefinisikan dua metode kustom dalam satu antarmuka akan menghasilkan anotasi '@FunctionalInterface' Tidak valid; FunctionalInterfaceTest bukanlah kesalahan antarmuka fungsional.


java.util.function Ini berisi sejumlah kelas untuk mendukung pemrograman fungsional Java, dan antarmuka fungsional dalam paket ini adalah:

Nomor seri
Antarmuka & Deskripsi
1BiKonsumen<T,U>
Mewakili tindakan yang menerima dua parameter input dan tidak mengembalikan hasil
2Fungsi Ganda<T, U, R>
Mewakili metode yang menerima dua parameter input dan mengembalikan hasil
3Operator Biner<T>
mewakili tindakan yang bekerja pada dua operator dari jenis yang sama, dan mengembalikan hasil dari jenis operator yang sama
4BiPredikat<T,U>
Mewakili metode nilai boolean dua parameter
5Pemasok Boolean
Mewakili penyedia hasil nilai boolean
6Konsumen<T>
Mewakili operasi yang menerima parameter input dan tidak mengembalikan apa pun
7Operator Biner Ganda
mewakili tindakan yang bekerja pada dua operator bernilai ganda, dan mengembalikan hasil nilai ganda.
8Konsumen Ganda
Mewakili tindakan yang menerima parameter nilai ganda dan tidak mengembalikan hasil.
9Fungsi Ganda<R>
Mewakili metode yang menerima parameter bernilai ganda dan mengembalikan hasilnya
10Predikat Ganda
Mewakili metode nilai boolean dengan parameter nilai ganda
11Pemasok Ganda
Mewakili penyedia struktur nilai ganda
12Fungsi DoubleToIntFunction
Menerima input tipe ganda dan mengembalikan hasil tipe int.
13Fungsi DoubleToLongLong
Menerima input tipe ganda dan mengembalikan hasil tipe panjang
14Operator DoubleUnaryOperator
Terima parameter dengan tipe yang sama ganda, dan jenis nilai yang ditampilkan juga ganda.
15Fungsi<T,R>
Menerima parameter input, mengembalikan hasil.
16Operator Biner IntBiner
Terima kedua parameter jenis int, dan mengembalikan jenis nilai int.
17Konsumen Internasional
Menerima parameter input tipe int tanpa nilai pengembalian.
18Fungsi IntT<R>
Menerima parameter input tipe int dan mengembalikan hasil.
19Predikat IntInt
: Menerima parameter input int dan mengembalikan hasil boolean.
20Pemasok IntSupplier
Tidak ada parameter, mengembalikan hasil tipe int.
21Fungsi IntToDouble
Menerima input tipe int dan mengembalikan hasil tipe ganda.
22Fungsi IntToLongLong
Menerima input tipe int dan mengembalikan hasil jenis panjang.
23Operator IntUnaryOperator
Terima parameter jenis int, dan kembalikan jenis nilai juga int.
24Operator Biner Panjang
Terima parameter jenis long dan return value type sebagai long.
25Konsumen Panjang
Terima parameter input jenis long tanpa nilai pengembalian.
26Fungsi Panjang<R>
Menerima parameter input jenis panjang dan mengembalikan hasil.
27Predikat Panjang
R menerima parameter input panjang dan mengembalikan hasil tipe boolean.
28Pemasok Panjang
Tidak ada parameter, mengembalikan hasil jenis panjang.
29Fungsi LongToDoubleDouble
Menerima input jenis panjang dan mengembalikan hasil tipe ganda.
30Fungsi Panjang
Menerima input jenis panjang dan mengembalikan hasil tipe int.
31Operator Panjang
Terima parameter dengan jenis yang sama dengan long, dan kembalikan nilai jenis juga long.
32ObjDoubleConsumer<T>
Terima jenis objek dan parameter input tipe ganda tanpa nilai pengembalian.
33ObjIntKonsumen<T>
Terima parameter input jenis objek dan jenis int tanpa nilai pengembalian.
34ObjLongKonsumen<T>
Menerima parameter input jenis objek dan jenis long tanpa mengembalikan nilai.
35Predikat<T>
Menerima parameter input dan mengembalikan hasil Boolean.
36Pemasok<T>
Tidak ada parameter, mengembalikan hasil.
37ToDoubleBiFunction<T,U>
Menerima dua parameter input dan mengembalikan hasil tipe ganda
38Fungsi <T>Ke-Ganda
Menerima parameter input dan mengembalikan hasil tipe ganda
39ToIntBiFunction<T,U>
Terima dua parameter input dan kembalikan hasil tipe int.
40Fungsi <T>Int
Terima parameter input dan kembalikan hasil tipe int.
41ToLongBiFunction<T,U>
Terima dua parameter input dan kembalikan hasil tipe panjang.
42Fungsi Panjang<T>
Terima parameter input dan kembalikan hasil jenis panjang.
43Operator UnaryOperator<T>
Terima parameter tipe T dan kembalikan nilai tipe T.


SayaAntarmuka fungsional di Java adalah delegasi di .NET/C#, teruskan metode sebagai parameter, sebagai berikut:

Pengantar delegasi C# (delegasi, Tindakan, Func, predikat)
https://www.itsvse.com/thread-4658-1-1.html

Fungsi Metode && Praktik Umum

//将Function对象应用到输入的参数上,然后返回计算结果。
R berlaku (T t);

Meskipun Fungsi< T, R > menerima objek T, mengembalikan objek R, dan hanya satu objek terima dan pengembalian, tetapi dikombinasikan dengan tuple, beberapa nilai masuk dan kembali dapat dicapai, mengacu:


Contoh 1: Teruskan dua nilai dan jumlahkan

Anda dapat menggunakan tulisan biasa dan ekspresi lambda, kodenya adalah sebagai berikut:





Contoh 2:

danThen metode



Metode Compose



Kode lengkap



Mengembalikan hasil



(Akhir)




Mantan:Solusi pengecualian Java FeignClient Interface untuk beberapa nama layanan yang identik
Depan:proyek maven \target\classes\META-INF\MANIFEST. MF (sistem...
Diposting pada 19/09/2021 19.34.22 |
java juga terlihat, meski tidak digunakan
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com