Javada lambda ifadesi kullanarak örnek oluşturmaya çalışıyorum ve resmi JDK8 kullanıyorum. Örneğim başarıyla çalıştırıldı. i derleyici bayt koduna Lambda ifade çevirmek nasıl kontrol çalışırken Ama bu benim kılan bazı confusion.Following benim örnek kod şudur: - Bu Article yılındaJava Byte'da Lambda İfadeleri Nasıl Çevirir Byte Code
public class LambdaTest {
public Integer lambdaBinaryOpertor(BinaryOperator<Integer> binaryOperator) {
return binaryOperator.apply(60, 72);
}
public static void main(String[] args) {
LambdaTest test = new LambdaTest();
BinaryOperator<Integer> binaryOperator = (a, b) -> a*b;
System.out.println("Additon using Lambda BinaryOperator: "+test.lambdaBinaryOpertor(binaryOperator));
}
}
, bunlar derleyici lambda tercüme konusunda tartışmak bayt koduna yönelik ifadeler. Bu belgeye göre, lambda ifadesi, static
yöntemine dönüşür ve lambda ifadesinin bildirildiği yer, lambda static
yönteminin referansına sahiptir. Aşağıdaki örnek makalede bulunmaktadır:
//Source code
class A {
public void foo() {
List<String> list = ...
list.forEach(s -> { System.out.println(s); });
}
}
//After compile above code "translate code "
class A {
public void foo() {
List<String> list = ...
list.forEach([lambda for lambda$1 as Block]);
}
static void lambda$1(String s) {
System.out.println(s);
}
}
Örneğim düzgün çalışıyor ve bize uygun sonucu ver. Ancak, sınıf bayt kodunu denetlemek için javap
komutunu çalıştırmaya çalıştığımda, bayt kodunda lambdas için statik bir yöntem yoktur. jenerik durumunda
c:\>javap LambdaTest
Compiled from "LambdaTest.java"
public class LambdaTest {
public LambdaTest();
public java.lang.Integer lambdaBinaryOpertor(java.util.function.BinaryOperator <java.lang.Integer>);
public static void main(java.lang.String[]);
}
, köprü yöntemi derleyici tarafından oluşturulur ve biz de
javap
komutunu kullanarak bu yöntemi kontrol edecek, ancak lambdas durumunda hiçbir
static
yöntem yoktur.
- bu makale yayımlanmasından sonra JDK 8'de lambda için kullanılan herhangi bir yeni uygulama var mı veya i yapacağım: mart 2014 fırlatma makale 2012 ve java 8 de yayınlandı oldu Yani lambda ötesinin ilgili bazı sorularınız lambda yöntemini kontrol etmek yanlış bir şey mi?
- Derleyici lambda ifadesiyle ne denli ilgilenir?
- JVM lambda çıkışını nasıl çağırır?