doSomethingElse(some); var result = doSomethingAnother(another); if (result instanceof Failure failure) { log.warn("処理に失敗しました: {}", failure.getMessage()); }
<S> Result<S> then(Function<T, Result<S>> func) { return switch (this) { case Success<T>(var value) -> func.apply(value); case Failure<T>(var errors) -> new Failure<>(errors); }; } } public record Success<T>(T value) implements Result<T> {} public record Failure<T>(List<String> errors) implements Result<T> {} JavaScriptのPromise.then()をパクインスパイア <Java17> Sealed Class <Java21> Record Pattern Matching <Java8> Function <Java8> record この部分 <Java14> switch式 <Java8> default