2013-12-15 15 views
7

Per esempio il motivo per cui posso scrivere la lineaPerché dobbiamo utilizzare il doppio punto per i riferimenti al metodo?

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

Ma nella documentazione quando ho letto sul metodo di riferimento, mi dicono di usare :: invece? Non fa lo stesso dell'operatore .?

Non so se il codice sopra compila, mentre sto digitando questo sul mio cellulare. Consideralo un esempio isolato.

+3

ummmmmm ... '::' è un errore di sintassi in Java . Che documentazione hai letto? – Doorknob

+3

Stai leggendo un tutorial su Java 8? –

+1

Puoi fornire il link dove leggi? Non è Java, è C++. –

risposta

10

L'operatore di due punti è un nuovo operatore fornito in Java8. È lo zucchero sintattico che dice al compilatore di generare un lambda basato sul contesto che chiamerà il metodo. Questo rende alcune espressioni lambda un po 'più semplici. Prima di Java8 questo operatore non esiste, e no, non è lo stesso dell'operatore punto (.). Per esempio:

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 

Per un po 'di lettura in più (Anche se questa roba è tutto in Beta e non è stato ufficialmente rilasciato) cercano http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html

+0

Questo è esattamente dove l'ho visto, stavo imparando su Lambdas e mi ha confuso fin da subito –

+0

E 'davvero per portare Java in linea con C++, ecc sull'intero puntatori del metodo e le funzioni anonime cose. – Sinkingpoint

Problemi correlati