Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 24226|Yanıt: 1

[Kaynak] Java'daki yaygın fonksiyonel arayüzlerin (delegelerin) ayrıntılı açıklaması

[Bağlantıyı kopyala]
Yayınlandı 16.09.2021 09:28:21 | | | |
JDK 1.8 API, eski Java'da yaygın olarak kullanılan Comparator veya Runnable arayüzleri gibi birçok yerleşik fonksiyonel arayüz içerir; bunlar, lambda'larda kullanılabilmek için @FunctionalInterface açıklamalar ekler. Şimdi, bunu Fonksiyon'daki yaygın fonksiyonların girişinden gerçekten anlayalım.

adtürAçıklama
TüketiciTüketici< T >T nesnesi alır, değer döndürmez
YüklemYüklem< T >T nesnesini alır ve boolean'ı döndürür
FonksiyonFonksiyon< T, R >T nesnesini alır ve R nesnesini döndürür
TedarikçiTedarikçi< T >T nesneleri (örneğin bitkiler) değerleri kabul etmeden sağlanır
UnaryOperatorUnaryOperatorT nesnesini alır ve T nesnesini döndürür
BinaryOperatorBinaryOperatorİki T nesnesi alın ve T nesnelerinin geri döndürülmesi


FunctionalInterface olarak etiketlenen bir arayüz, yalnızca bir özel yönteme sahip olan, ancak nesne sınıfından miras alınan metodları da içeren fonksiyonel arayüz olarak adlandırılır. Bir arayüzde sadece bir yöntem varsa, derleyici bunu işlevsel bir arayüz olarak düşünecektir. Fonksiyonel bir arayüz olup olmadığına bakılmaksızın, aşağıdaki noktalar not edilmelidir:


  • Annotasyon yalnızca arayüzlerde "Sadece bir soyut yöntem var" şeklinde işaretlenebilir.
  • JDK8 arayüzündeki statik ve varsayılan yöntemler soyut yöntemler değildir.
  • Arayüz varsayılan olarak java.lang.Object'i devralır, bu yüzden arayüz bildirinin Nesne'deki metodu geçersiz kıldığını gösterirse, bu soyut bir yöntem olarak kabul edilmez.
  • Açıklama zorunlu değildir ve bir arayüz "fonksiyonel arayüz" tanımını karşılarsa, annotasyonun eklenip eklenmemesi hiçbir etkisi olmaz. Ayrıca açıklama derleyicinin daha iyi kontrol etmesini sağlıyor. Fonksiyonel olmayan bir arayüz yazarsanız ama @FunctionInterface eklerseniz, derleyici hata rapor eder.
  • Bir arayüzde iki özel metod tanımlandığında, geçersiz bir '@FunctionalInterface' açıklaması elde edilir; FunctionalInterfaceTest işlevsel bir arayüz hatası değildir.


java.util.function Java'nın işlevsel programlamasını desteklemek için bir dizi sınıf içerir ve bu paketteki işlevsel arayüzler şunlardır:

Seri numarası
Arayüz ve Açıklama
1BiConsumer<T,U>
İki giriş parametresini kabul eden ve sonuç vermeyen bir eylemi temsil eder
2BiFunction<T,U,R>
İki giriş parametresini kabul eden ve bir sonuç veren bir yöntemi temsil eder
3BinaryOperator<T>
aynı tipte iki operatör üzerinde etkili olan bir eylemi temsil eder ve aynı tür operatörün sonucunu döndürür
4Çift Başbilgi<T,U>
İki parametreli bir boolean değer yöntemini temsil eder
5BooleanTedarikçi
Boolean değer sonucunun sağlayıcısını temsil eder
6Tüketici<T>
Bir giriş parametresini kabul eden ve hiçbir şey döndürmeyen bir işlemi temsil eder
7DoubleBinaryOperator
iki çift değerli operatör üzerinde etkili olan bir eylemi temsil eder ve çift değerin sonucunu döndürür.
8Çift Tüketici
Çift değer parametresini kabul eden ve sonuç vermeyen bir eylemi temsil eder.
9DoubleFunction<R>
Çift değerli bir parametreyi kabul eden ve sonucu döndüren bir yöntemi temsil eder
10Çift Döl
Çift değer parametresi olan bir boolean değer yöntemini temsil eder
11DoubleSupplier
Çift değer yapının sağlayıcısını temsil eder
12DoubleToIntFunction
Çift tip girdiyi kabul eder ve int-tipi bir sonuç döndürür.
13DoubleToLongFunction
Çift tip girdiyi kabul eder ve uzun tip sonuç döndürür
14DoubleUnaryOperator
Aynı tipte bir parametreyi iki katı kabul ederseniz, geri değer türü de çift olur.
15Fonksiyon<T,R>
Bir giriş parametresi kabul eder, sonuç döndürür.
16IntBinaryOperator
Her iki tür int parametresini kabul edin ve değer türünü int döndürün.
17Uluslararası Tüketici
Dönüş değeri olmayan int tipinde bir giriş parametresini kabul eder.
18IntFunction<R>
Bir int tipi giriş parametresini kabul eder ve sonuç döndürür.
19IntPredicate
: Bir int giriş parametresini kabul eder ve bir boolean sonucu döndürür.
20IntSupplier
Parametre yok, int türü sonucu döndürür.
21IntToDoubleFunction
Bir int tipi girdisini kabul eder ve çift tip bir sonuç döndürür.
22IntToLongFunction
Bir int tipi girdisini kabul eder ve uzun bir tür sonucu döndürür.
23IntUniaryOperator
Bir tür int parametresini kabul edin ve değer türü de int'i döndürün.
24LongBinaryOperator
Hem uzun tip hem de değer türünü uzun olarak kabul edin.
25LongConsumer
Dönüş değeri olmayan uzun bir giriş parametresi kabul edin.
26LongFunction<R>
Uzun tip giriş parametresini kabul eder ve sonuç döndürür.
27LongPredicate
R, uzun bir giriş parametresi kabul eder ve boolean tipi bir sonuç döndürür.
28LongSupplier
Parametre yok, uzun tip sonucu döndürür.
29UzunToDoubleFunction
Uzun tip girdisini kabul eder ve çift tip sonucu döndürür.
30LongToIntFunction
Uzun tip girdisini kabul eder ve bir int türü sonucu döndürür.
31LongUnaryOperator
Aynı tipte bir parametreyi uzun olarak kabul ederseniz, türün değeri de uzun olur.
32ObjDoubleConsumer<T>
Bir nesne tipi ve dönüş değeri olmayan çift tip giriş parametresi kabul edin.
33ObjIntConsumer<T>
Return değeri olmadan type object ve type int giriş parametrelerini kabul edin.
34ObjLongConsumer<T>
Tip nesne ve tür uzun giriş parametrelerini kabul eder ve değer döndürmez.
35Yüklem<T>
Bir giriş parametresi kabul eder ve Boolean sonucu döndürür.
36Tedarikçi<T>
Parametre yok, sonuç döndürür.
37ToDoubleBiFunction<T,U>
İki giriş parametresini kabul eder ve çift tip sonuç verir
38ToDoubleFunction<T>
Bir giriş parametresini kabul eder ve çift tür sonuç verir.
39ToIntBiFunction<T,U>
İki giriş parametresi kabul edin ve bir int türü sonucu döndürün.
40ToIntFunction<T>
Bir giriş parametresini kabul edin ve bir int türü sonucu döndürün.
41ToLongBiFunction<T,U>
İki giriş parametresini kabul edin ve uzun tip bir sonuç döndürün.
42ToLongFunction<T>
Bir giriş parametresini kabul edin ve uzun bir tür sonucu döndürün.
43UnaryOperator<T>
T tipi bir parametreyi kabul edin ve T tipinin değerini döndürün.


BenJava'daki işlevsel arayüz, .NET/C#'daki delegedir, yöntemi parametre olarak şu şekilde geçirin:

C# delegelerine giriş (delege, Eylem, Func, predikat)
https://www.itsvse.com/thread-4658-1-1.html

Fonksiyon Yaygın Yöntemler && Uygulamalar

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

Fonksiyon< T, R > T nesnesi alır, R nesnesini döndürür ve yalnızca bir alıcı ve geri nesne sağlar, ancak tuple'larla birleştiğinde birden fazla gelen ve geri dönen değer elde edilebilir, şöyle:


Örnek 1: İki değeri geçirin ve toplamayın

Sade yazı ve lambda ifadeleri kullanabilirsiniz, kod şu şekildedir:





Örnek 2:

andThen yöntemi



Yazma yöntemi



Tam kod



Dönüş sonuçları



(Son)




Önceki:Birden fazla aynı hizmet adı için Java FeignClient Arayüzü istisna çözümü
Önümüzdeki:maven projesi \target\classes\META-INF\MANIFEST. MF (sistem...
Yayınlandı 19.09.2021 19:34:22 |
Java da baktı, ancak kullanılmıyor
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com