Java bunu geçersiz olarak döndüren geçersiz yöntemler


20

SO hakkında "bu" türü döndüren setter yöntemleri hakkında birkaç tartışma var. Ve java 7'nin bunu döndüren geçersiz yöntemler önerisi olduğu görülüyor. Ancak bu teklif java 7 özelliklerine ulaşamadı. Bu teklifin java 8'e mi yoksa geleceğe mi taşındığını veya tamamen atıldığını bulamadım. Bu mu?

Ref bağlantısı - /programming/31584/design-java-and-returning-self-reference-in-setter-methods


3
Başkaları için yararlı olacak ve soruyu daha iyi anlamalarına yardımcı olacak şekilde, soruda bahsettiğiniz tartışma ile bazı bağlantılara sahip olmak minnettar olacaktır.
ManuPK

sorumu düzenledi
Tarun

Yanıtlar:


11

Bunun herhangi bir kaynağını bulamıyorum, ancak bu özelliğin tamamen kaldırıldığına inanıyorum. Düşünebileceğim sayısız neden var:

  • performans - voidartık her yöntemin fazladan bir dönüş opcode'u vardır ve bu yöntemin adlandırıldığı her yer, popaslında yöntem zincirleme kullanmıyorsa, örtük gerekir

  • geriye dönük uyumluluk - bu özelliğe karşı derleme aniden kodu geriye doğru uyumsuz hale getirir çünkü her voidyöntemin sözleşmesi değişmiştir

Tabii ki bu derleyici tarafından da uygulanabilir ( çağırma yöntemi void? Muhtemelen this, bunu örtülü olarak eklememe izin verdiniz ), bu yaklaşımın dezavantajları nelerdir bilmiyorum.


1
Derleyici bu özelliği desteklemelidir (böylece çağrı kodu derlenir) ve çağrılan nesneyi kaydedip çağrı yöntemi değiştirilmeden tekrar kullanabilir.
Peter Lawrey

Bu nitelikteki OpenJDK'nın özellikleri artık JDK Geliştirme Önerileri (JEP) olarak ele alınmaktadır ve aslında bu artık listelenmemektedir (ve oldukça uzun süredir tartışıldığını görmedim).
Martijn Verburg

3

Bunun, Project COIN'in 2009 enkarnasyonu için resmen önerildiğine inanmıyorum. Bu sayfa tüm teklifleri listeliyor ve karşılık gelen bir teklif göremiyorum.

Eğer teklif edilmemiş olsaydı, düşünülemezdi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.