Ce face Objects
java.util.Objects (atenție la „s” de la sfârșit) adună metode ajutătoare pentru obiecte, care nu aruncă NullPointerException când primesc null. Clasa trebuie importată: import java.util.Objects;.
Objects.equals(a, b) returnează true dacă ambele sunt null, false dacă doar unul este null și a.equals(b) în rest. Înlocuiește verificarea lungă a == null ? b == null : a.equals(b).
Objects.isNull(x) este x == null, iar Objects.nonNull(x) este x != null. Există ca să poată fi folosite ca referințe la metode în stream-uri: filter(Objects::nonNull).
Parametri
| Parametru | Descriere |
|---|---|
a, b |
Obiectele comparate (pot fi null). |
obj |
Obiectul verificat. |
Ce returnează
boolean.
Exemple
Exemplul 1: equals care suportă null
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String a = null;
String b = "Iași";
System.out.println(Objects.equals(a, b));
System.out.println(Objects.equals(null, null));
System.out.println(Objects.equals("Iași", b));
try {
System.out.println(a.equals(b));
} catch (NullPointerException e) {
System.out.println("a.equals(b) aruncă NullPointerException");
}
}
}
Rezultat
false
true
true
a.equals(b) aruncă NullPointerException
Exemplul 2: Eliminarea valorilor null dintr-o listă
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
public class Main {
public static void main(String[] args) {
List<String> telefoane = Arrays.asList("0745111222", null, "0722333444", null);
List<String> valide = telefoane.stream().filter(Objects::nonNull).toList();
long lipsa = telefoane.stream().filter(Objects::isNull).count();
System.out.println(valide);
System.out.println("Lipsă: " + lipsa);
}
}
Rezultat
[0745111222, 0722333444]
Lipsă: 2
Exemplul 3: Compararea câmpurilor opționale
import java.util.Objects;
public class Main {
record Contact(String nume, String email) {}
static boolean acelasiEmail(Contact x, Contact y) {
return Objects.equals(x.email(), y.email());
}
public static void main(String[] args) {
Contact ana = new Contact("Ana", "ana@exemplu.ro");
Contact ion = new Contact("Ion", null);
Contact radu = new Contact("Radu", null);
System.out.println(acelasiEmail(ana, ion));
System.out.println(acelasiEmail(ion, radu));
}
}
Rezultat
false
true
Greșeli frecvente
- Confunzi
Object(clasa de bază) cuObjects(clasa de utilitare) și uiți importuljava.util.Objects. - Folosești
Objects.equalspentru array-uri: compară identitatea, nu conținutul. FoloseșteArrays.equals.
Comenzi înrudite
Objects.hash: hash() calculează un cod hash din mai multe câmpuri (ideal în hashCode()); hashCode(o) dă 0 pentru null.Objects.requireNonNull: requireNonNull() oprește imediat cu un mesaj clar dacă o valoare este null; requireNonNullElse() înlocuiește null cu o valoare implicită.Objects.toString: Transformă un obiect în text fără să arunce excepție pentru null: dă „null” sau textul ales de tine.Object.equals: equals() spune dacă două obiecte sunt „egale”, iar hashCode() dă un număr folosit de HashMap și HashSet; se suprascriu împreună.Objects.compare: Compară două obiecte cu un Comparator dat; returnează 0 imediat dacă sunt același obiect (inclusiv ambele null).