2014-09-17 15 views
5

Okun sol tarafının argümanlara sahip olduğunu ve okun sağ tarafının argümanların gittiği işlev olduğunu anlıyorum. Ancak, java 8'in sol ve sağ tarafa nasıl haritalandığını ve bir Fonksiyona dönüştüğünü bilmek isterim. Orada ne olur ve bilgiyi nerede bulabilirim?Ok operatörü java 8'de dahili olarak nasıl çalışır?

+1

Bu bir [Lambda İfadesi] (http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html). –

+0

Aşağıdaki http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html adresine bakın, http://viralpatel.net/blogs/lambda-expressions-java-tutorial/ – CodeWarrior

cevap

7

-> nolu javac derleyiciniz, kod içeriğiyle statik bir yöntem ekler. Ayrıca, JVM, lambda'nın argümanlara ve dönüş türüne uyguladığı arayüzü haritalayabilmesi için sınıfa dinamik arama tarafı bilgisi ekler. JVM, arabirimi oluşturulan yönteme bağlamak için çalışma zamanında kod üretir.

Lambdalar ve anonim sınıflar ile bir fark, çarpım değişkenlerinin sadece etkili bir şekilde nihai olması gerektiği (son haline getirilmiş olabileceği gibi) ve üye değişkenlerin kopyalanmasıdır, yani bir dış sınıfın this referansını tutmaz .

Her ikisi de hiçbir argüman almasa bile Runnable ve Callable<void> arasındaki farkı söyleyebilir. Daha fazla bilgi için http://vanillajava.blogspot.com/2014/09/lambdas-and-side-effects.html

+1

Harika makale Orada! –

+0

@LuiggiMendoza alkışlar. :) –

+3

Anonim iç sınıflar tarafından yakalanan yerlilerin sadece açık bir şekilde nihai olarak ilan edilmeleri gerekmez. Bu lambdalara benzer ve önceki sürümlerden Java 8'de bir rahatlama. Lambdas ayrıca, kapsayıcı örneği de yakalayacaktır, ancak yalnızca bir şeyin yakalanmasını gerektiriyorsa. Yine de, siz doğru değilsiniz, yakalamayan lambdalar kapalı örneği yakalamayacaktır, oysa AIC'ler muhtemelen gereksiz olsa bile. –

İlgili konular