wtorek, listopada 11, 2025

_ w Java'ie :-)

Ha! dziś się naumiałem, że w końcu w Java'ie (może od 21, ja to 25 sprawdziłem) _ jest zmienną "throw away" :-)

O co chodzi?

Np. jeśli robimy coś takiego:

m.computeIfAbsent(key, k -> new ArrayList<>()).add(val);

to to k jest zmienną, jak na zewnątrz jest zmienna k to mamy problem i się nie skompiluje:

var k = 7;
m.computeIfAbsent(key, k -> new ArrayList<>()).add(val);

bo będzie sie pluło w k ->, że k jest już zadeklarowana w scope'ie...

Teraz można użyć _ zamiast k:

m.computeIfAbsent(key, _ -> new ArrayList<>()).add(val);

co niby nie robi różnicy (chociaż od pewnego momentu taki kod się nie kompilował), ale teraz można mieć coś takiego:

var _ = 7;
m.computeIfAbsent(key, _ -> new ArrayList<>()).add(val);

i się skomplikuje bo to _ jest throw away... więc np. takie coś:

var _ = 7;
System.out.println(_); // <--- Using '_' as a reference is not allowed
m.computeIfAbsent(key, _ -> new ArrayList<>()).add(val);

to kompilator zakrzyknie, że ej, nie wolno.

Mała rzecz, a cieszy :-) 




Podobne postybeta
Java 8 + lambdy = wolno ;-)
Zaczynam woleć Map nad Map ;-)
Javozagadka ;-)
Który kod (nie kot! ;-)) lepszy?
&quot;Nowy&quot; java.net.http.HttpClient jest cool :-)

Brak komentarzy:

Prześlij komentarz