Aşağıdaki kodu:Bir lambda çağrısı için neden 2 adet istif çerçevesi var?
public static void main(String[] args) {
Collections.singleton(1).stream().forEach(i -> new Exception().printStackTrace());
}
baskılar:
java.lang.Exception
at PrintLambdaStackTrace.lambda$main$0(PrintLambdaStackTrace.java:6)
at PrintLambdaStackTrace$$Lambda$1/1831932724.accept(Unknown Source)
at java.util.Collections$2.tryAdvance(Collections.java:4717)
at java.util.Collections$2.forEachRemaining(Collections.java:4725)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at PrintLambdaStackTrace.main(PrintLambdaStackTrace.java:6)
Nasıl lamda çağırma
uygulandığı ? Neden 2 yığın çerçevesi var?
Bu güzel bir soru. Cevabım kendimle ilgilendiğimden beri izleyeceğim. Tahminim, JVM'nin yürütme süresinde anonim bir sınıf oluşturmasıdır. Bir yığın, sınıfı oluşturmak için kullanılan yöntemden ve sınıfın kendisinden ikinci olandan kaynaklanır. Ama bu sadece bir tahmin. – Sekkuar
Ayrıca bkz. Http://stackoverflow.com/q/16827262/2711488 – Holger