Functional
Optional: orElse で既定値を返す
値がない場合だけ、指定した既定値を選びます。
SourceNicknames.java
Java 21
package examples.optional;
import java.util.Optional;
public final class Nicknames {
private Nicknames() {}
public static String displayName(Optional<String> nickname) {
return nickname.orElse("anonymous");
}
}TestNicknamesTest.java
Java 21
package examples.optional;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Optional;
import org.junit.jupiter.api.Test;
class NicknamesTest {
@Test
void 値があるOptionalはその値を返す() {
assertEquals("duke", Nicknames.displayName(Optional.of("duke")));
}
@Test
void emptyのOptionalは既定値を返す() {
assertEquals("anonymous", Nicknames.displayName(Optional.empty()));
}
}01Assertion
このテストで確認できること
- 値がある Optional はその値を返す
- empty の Optional は既定値を返す
orElse は値がないときの結果を読みやすく表します。遅延評価が必要なら orElseGet を選びます。
OBSERVED RESULT
expected: Optional.empty().orElse("guest") → guest
actual: guest