Java 8 features hakkında bir şeyler okuyordum ve yöntem referanslarına sahip olduklarını gördüm, ancak yöntem aşırı yüklendiğinde hangi yöntemin nasıl belirtileceğini görmedim. Kimse biliyor mu?Boş olmayan bağımsız değişkenler için yöntem başvuruları?
cevap
:
lambda ifadeleri kullanılabilir? hedef türü uygun parametresinin türü olduğu
yöntem ya da yapıcı argümanlar. Yöntem veya yapıcı aşırı yüklendiyse, olağan aşırı yükleme mekanizmaları, lambda ifadesinin hedef türle eşleşmesinden önce kullanılır. (Aşırı yük çözünürlüğünden sonra, , aynı imzası ile aynı işlevsel arayüzleri aynı işlevsel tanımlayıcılarla kabul eden birden fazla eşleştirme yöntemi veya kurucu olabilir. Bu durumda, lambda ifadesi, bu işlevsel arabirimlerden birinin türüne döküm olmalıdır.) ; Hedef türünü açıkça sağlayan cast ifadeleri.
Örneğin:
Object o =() -> { System.out.println("hi"); }; // Illegal: could be Runnable or Callable (amongst others)
Object o = (Runnable)() -> { System.out.println("hi"); }; // Legal because disambiguated
Yani, belirsiz imzalar varsa bunu döküm gerekir.
Derleyici, yöntem imzasını fonksiyonel arabirim ile eşleştirecektir.
Integer foo(){...}
Integer foo(Number x){...}
Supplier<Number> f1 = this::foo; //()->Number, matching the 1st foo
Function<Integer, Number> f2 = this::foo; // Int->Number, matching the 2nd foo
Esasen, f2
bir Integer
kabul edip bir Number
dönebilirsiniz şeydir, derleyici 2 foo()
gereksinimi karşıladığını öğrenebilirsiniz. this Lambda FAQ itibaren
- 1. Orta bağımsız değişkenler yapmak için deyimsel yöntem
- 2. Bağımsız değişkenler listesi ile soyut yöntem
- 3. İç içe olmayan bağımsız değişkenler derlenmiyor
- 4. Bağımsız değişkenler için makroları kullanın
- 5. Bağımsız Değişkenler HTTP İletisi C#
- 6. commons-cli bağımsız değişkenler
- 7. sprintf - yinelenen bağımsız değişkenler
- 8. C - pthread bağımsız değişkenler
- 9. TestNG farklı sınıftan bağımsız değişkenler
- 10. Web.py işleyici sınıfları için bağımsız değişkenler
- 11. Kotlin'de boş olmayan, boş olmayan dizeler için nasıl test edilir?
- 12. subprocess.Popen isteğe bağlı bağımsız değişkenler
- 13. Boş değişkenler Lua
- 14. RXJS 5 .subscribe() bağımsız değişkenler olmadan
- 15. Neden bu tür bağımsız değişkenler çıkarılamıyor?
- 16. python boş bağımsız değişken
- 17. Yöntem bağımsız değişkenler için geçerli değil İstisna türü silme sorunu var mı?
- 18. php: Anonim fonksiyonu ve bağımsız değişkenler
- 19. Gravürde derleyici ve javadoc'a bağımsız değişkenler aktarılıyor
- 20. SendGrid e-postaları ile benzersiz bağımsız değişkenler
- 21. R programlama: Değerlendirmede hata: Kullanılmayan bağımsız değişkenler
- 22. Fabrika istekleri aracılığıyla bağımsız değişkenler nasıl iletilir
- 23. Alt Sınıf - Bağımsız Değişkenler Superclass 'dan
- 24. Statik olmayan yöntem PropertyInfo.SetValue
- 25. Geçersiz kılınmak için soyut olmayan yöntem kuvveti
- 26. Bir JavaScript işlevinde sınırsız bağımsız değişkenler
- 27. Python argparse ile gizli bağımsız değişkenler oluşturma
- 28. Bağımsız değişkenler ile birlikte hesaplanmış özellikler
- 29. twig şablonundan çağrılırken denetleyicide bağımsız değişkenler alınıyor
- 30. argparse: İsteğe bağlı bağımsız değişkenler nasıl yapılır?
Fonksiyonel arayüzler için lambda ifadeleri kısaltmalar olduğundan, yöntemin türü arayüzdeki yöntemden kötüye kullanılabilir olmalıdır. –
@ LeonardBrünings: Bu lambda ifadelerine değil, farklı olan yöntem referanslarına işaret ediyor. Bir lambda ifadesi, bir fonksiyonun bir uygulamasıdır; Bir yöntem referansı, önceden varolan bir sınıftan önceden varolan bir yönteme yapılan bir referanstır. –
@LouisWasserman Bağlandığım makaleye göre, yöntem referansları lambda olarak benim etiketim olarak uygulanacak. – ArtB