Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class OptionalChainingComposed {
- public static void main(String[] args) {
- OptionalChainingComposed optionalChaining = new OptionalChainingComposed();
- optionalChaining.happyPath();
- optionalChaining.nullInput();
- }
- public void happyPath() {
- nonNullPipeline("happyPath")
- .ifPresent(System.out::println);
- }
- public void nullInput() {
- nonNullPipeline(null).ifPresent(val -> val.concat("boom!"));
- }
- // Instead of THIS:
- // public Optional<String> nonNullPipeline(String string) {
- // return Optional.ofNullable(stringOptional)
- // .map(val -> operation1.apply(val))
- // .map(val -> operation2.apply(val))
- // .map(val -> operation3.apply(val));
- // }
- // put these here so we don't get an illegal forward reference...
- Function<String, String> operation1 = String::toLowerCase;
- Function<String, String> operation2 = String::toUpperCase;
- Function<String, String> operation3 = value -> value.concat("suffix");
- Function<String, String> operation4 = value -> null;
- // We can do THIS:
- Function<String, String> pipelineOne = operation1.andThen(operation2).andThen(operation3);
- // And this:
- public Optional<String> nonNullPipeline(String string) {
- return Optional.ofNullable(string).map(pipelineOne);
- }
- }
Add Comment
Please, Sign In to add comment