import java.util.Optional; import java.util.concurrent.CompletableFuture; class Test { Optional getOptionalAssigneeId() { return null; } public void getById(Optional join, CompletableFuture voidCompletableFuture) { voidCompletableFuture.thenApply(v -> { return join.map(caze -> { caze.getOptionalAssigneeId().map(id -> { String s = id; return null; }); return null; }); }).join(); } }