
#gotojava #java #naukaprogramowania
Zagadka ( ͡º ͜ʖ͡º)
Ale bez ankiety, wolę zobaczyć tutaj dyskusję i argumenty niż nudne odpowiedzi:
Jaka jest różnica między tymi dwoma kodami? Czy może są równoważne?
Zagadka ( ͡º ͜ʖ͡º)
Ale bez ankiety, wolę zobaczyć tutaj dyskusję i argumenty niż nudne odpowiedzi:
Consumer consumerRef = System.out::println;
Consumer consumer = x -> System.out.println(x);Jaka jest różnica między tymi dwoma kodami? Czy może są równoważne?
- Najlepsze
- Wszystkie komentarze







W tym wypadku te kody są inne,
Ha! Sprawdziłem to sobie javapem. No ale nie wiem czy można pisać o tym, żeby blokady nie dostać. (⌐ ͡■ ͜ʖ ͡■)
https://bugs.openjdk.java.net/browse/JDK-8162779
Więc zostawiłem lambdę i w sumie nie drązyłem tematu dalej. Ale nie wiem @GotoFinal czy dokładnie o to Ci chodziło, czy może miałeś coś innego na myśli.
W pierwszym masz referencję do funkcji/metody, w drugim całą funkcję, o ile dobrze pamiętam.
W zasadzie jak zawsze, odpowiedź: "to zależy" byłaby prawidłowa bo pewnie po optymalizacjach przeszłoby do tej samej formy.
???
Odpowiedź sama się nasuwa.
@GotoFinal: Nie da się tego jednoznacznie stwierdzić :). Czytałem dzisiaj rano, jakiś artykuł czy nawet wycinek dokumentacji odnośnie translacji lambd od Goetze z chyba 2014 czy 2016 r. Z tego co on tam napisał (a przynajmniej na tyle na ile ja to zrozumiałem) to w dużym uproszczeniu na etapie kompilacji wyciągane są podstawowe informacje o tym co ta lambda zwraca, co przyjmuje, do
Dla mnie i tak najważniejsze jest to, że co to będzie jest podejmowane na etapie uruchomienia a nie kompilacji.