Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.function.Consumer;
- import java.util.function.Function;
- import java.util.Optional;
- public class Example {
- public static void main(String []args) {
- // Create a series of nullable objects.
- Test a = new Test();
- Test b = new Test();
- Test c = new Test();
- Test d = new Test();
- a.setInner(b);
- b.setInner(c);
- c.setInner(d);
- // This is probably as close as we're going to get to
- // null coalescing without actual language support.
- Optional
- .ofNullable(a)
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .ifPresent(i -> i.hello());
- // If you go too deep and find a `null`, nothing happens.
- Optional
- .ofNullable(a)
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .ifPresent(i -> i.hello());
- // You can also just retrieve a value instead of consuming the object.
- String string = Optional
- .ofNullable(a)
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .map(i -> i.getInner())
- .map(i -> i.toString())
- .orElse("<is null>");
- System.out.println(string);
- }
- private static class Test {
- private Test inner;
- public Test getInner() {
- return inner;
- }
- public void hello() {
- System.out.println("Hello, world!");
- }
- public void setInner(Test inner) {
- this.inner = inner;
- }
- }
- }
Add Comment
Please, Sign In to add comment