Optionals
Der Umgang mit null-Werten stellt in vielen Programmiersprachen eine große
Herausforderung dar. Zur Vermeidung von Laufzeitfehlern (NullPointerException)
müsste vor jedem Methodenaufruf eigentlich überprüft werden, ob ein gültiger
Wert vorliegt oder nicht.
public class MainClass {
private static List<String> names;
public static void main(String[] args) {
names = new ArrayList<>();
String name = getNameByInitial('H');
System.out.println(name.length()); // Laufzeitfehler
}
public static String getNameByInitial(char initial) {
String name = null;
for (String n : names) {
if (n.charAt(0) == initial) {
name = n;
break;
}
}
return name;
}
}
Die Klasse Optional ermöglicht in Java eine komfortable Möglichkeit, mit
null-Werten umzugehen. Das eigentliche Objekt wird dabei in einem Objekt der
Klasse Optional verpackt; der Zugriff auf das verpackte Objekt erfolgt über
entsprechende Methoden. Dies stellt sicher, dass sich der Entwickler mit
null-Werten auseinander setzen muss.
Für den Umgang mit null-Werten stellt die Klasse Optional Methoden wie
T get(), boolean isPresent() und void ifPresent(consumer: Consumer<T>) zur
Verfügung. Zudem existieren Methoden wie void orElse(other: T), mit denen
Standardwerte festgelegt werden können.
public class MainClass {
private static List<String> names;
public static void main(String[] args) {
names = new ArrayList<>();
Optional<String> name = getNameByInitial('H');
name.ifPresent(n -> System.out.println(n.length()));
}
public static Optional<String> getNameByInitial(char initial) {
String name = null;
for (String n : names) {
if (n.charAt(0) == initial) {
name = n;
break;
}
}
return Optional.ofNullable(name);
}
}