V jednom z předchozích příspěvků jsem se věnoval třídě Optional z knihovny Guava. Nezmínil jsem ale užitečnou metodu orNull(). Tato metoda buď vrátí referenci na objekt v případě, že isPresent() je true, nebo null. Může se to hodit třeba v případě, kdy ve svém kódu používáte třídu Optional, ale jiné metody požadují objekt, nebo null.
Optional str1 = Optional.of("world");
Optional str2 = Optional.absent();
System.out.println(str1.orNull());
System.out.println(str2.orNull());
Výsledek.
world null
V následujícím kódu si všimněte metod getString01() a getString02(). Obě dělají to samé, jen getString02() je mnohem kratší a přehlednějsí.
public static void main(String[] args) {
Optional str1 = Optional.of("world");
Optional str2 = Optional.absent();
System.out.println(getString01(str1));
System.out.println(getString01(str2));
System.out.println(getString02(str1));
System.out.println(getString02(str2));
}
private static String getString01(Optional str) {
if (str.isPresent()) {
return str.get();
} else {
return null;
}
}
private static String getString02(Optional str) {
return str.orNull();
}