2013-12-15 8 views
7

neden Neden yöntem referansları için çift kolon kullanmalıyız? Örneğin

Character[] c = Arrays.sort(list.toArray(new Character[list.size()])) 

Ama belgelerinde

Ben metod referans hakkında okuyun satır yazabilir, bunun yerine :: kullanmak için söyle? . operatörü ile aynı şeyi yapmıyor mu?

Yukarıdaki kodu derlediğimi bilmiyorum, cep telefonumda yazarken. Bunu gevşek bir örnek olarak düşünün.

+3

ummmmmm ... '::' Java bir yazım hatasıdır deneyin . Hangi dokümanları okudunuz? – Doorknob

+3

Java 8 hakkında bir eğitim mi okuyorsunuz? –

+1

Bunu okuduğunuz bağlantıyı verebilir misiniz? Java değil, C++. –

cevap

10

Çift kolon operatörü, Java8'de sağlanan yeni bir işleçtir. Derleyiciye yönteme çağıracak bir bağlama dayalı bir lambda üretmesini söyleyen sözdizimsel şekerdir. Bu, bazı lambda ifadelerini biraz daha kolay hale getirir. Java8'den önce bu operatör mevcut değil ve hayır, nokta (.) Operatörü ile aynı değil. Örneğin: (bu malzeme, tüm Beta olduğu ve resmi yayınlandı edilmemiş olmakla beraber) ekstra okuma bir bit için

Math.max(4, 6) // Calls Math.max with the arguments 4 and 6 
Math::max // A reference to the max method in the java.lang.Math class 

http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html

+0

Tam olarak nerede gördüm, Lambdas hakkında bir şeyler öğreniyordum ve bu beni dışardan karıştırdı –

+0

Gerçekten de tüm yöntem işaretçileri ve anonim işlevler üzerinde C++ ile uyumlu Java getirmek gerçekten eşyalar. – Sinkingpoint