2013-06-11 19 views
7

Bildiğim kadarıyla, Groovy zaten karışımları vardır, Scala'nın özellikleri vardır. C ailesinin birden fazla kalıtımı vardır. Peki, Java'daki yeni işlevler neden "uzantı yöntemleri" olarak adlandırılıyor? Aynı şey için sadece farklı bir isim mi yoksa başka bir neden var mıydı? Özelliklerden ve karışımlardan farklar nelerdir? Neleri ekliyorlar ve neleri eksikler?Java 8 uzatma yöntemleri - neden karışmalar veya özellikler olarak adlandırılmaz?


Kişisel olarak onları "uzantı yöntemleri" yerine "uygulama yöntemleri" olarak görüyorum.

+5

Büyük bir fark, arayüzlerin örnek alanlara sahip olmamasıdır. – yshavit

cevap

7

Peki, Java'daki yeni işlevler neden "uzantı yöntemleri" olarak adlandırılıyor?

AFAIK, Bu adlandırma C# 'dan geliyor. Sanal uzantı yöntemleri yalnızca yöntemler içindir, karıĢımlar ve özellikler de alanlar için geçerlidir.

Interface evolution via virtual extension methods Not: Brian'ın kendisi "Defender yöntemleri" olarak adlandırılıyor ancak sanırım "Sanal uzantı yöntemleri" daha yaygın olarak tanınıyor.

JVM Language Summit 2011 - Brian Goetz Oldukça eminim ki bu onun adı niçin olduğu hakkında konuşuyor.

+3

Aslında, karışımlar hem davranış hem de durum devri verirken, özellikler yalnızca davranış verir. Biliyorum, Scala'nın 'Özellikleri' var ve eyalet mirasına sahipler ... ama bunların tam olarak karıştırılması gerekiyor. – Enkk