From e968f0352f6d2c29665311ca215550fa16d90fe5 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Thu, 28 Nov 2019 18:13:31 +0100 Subject: [PATCH] Esempi con gli Optional --- .../org/gym/fp/moderjava/OptionalTest.java | 33 +++++++++++++++++++ .../org/gym/fp/moderjava/optional/Car.java | 17 ++++++++++ .../gym/fp/moderjava/optional/Insurance.java | 16 +++++++++ .../org/gym/fp/moderjava/optional/Person.java | 18 ++++++++++ 4 files changed, 84 insertions(+) create mode 100644 modern-java/src/main/java/org/gym/fp/moderjava/OptionalTest.java create mode 100644 modern-java/src/main/java/org/gym/fp/moderjava/optional/Car.java create mode 100644 modern-java/src/main/java/org/gym/fp/moderjava/optional/Insurance.java create mode 100644 modern-java/src/main/java/org/gym/fp/moderjava/optional/Person.java diff --git a/modern-java/src/main/java/org/gym/fp/moderjava/OptionalTest.java b/modern-java/src/main/java/org/gym/fp/moderjava/OptionalTest.java new file mode 100644 index 0000000..18793be --- /dev/null +++ b/modern-java/src/main/java/org/gym/fp/moderjava/OptionalTest.java @@ -0,0 +1,33 @@ +package org.gym.fp.moderjava; + +import org.gym.fp.moderjava.optional.Car; +import org.gym.fp.moderjava.optional.Insurance; +import org.gym.fp.moderjava.optional.Person; + +import java.util.Optional; + +import static java.lang.System.out; + +public class OptionalTest { + + public static void main(String[] args) { + Insurance myInsurance1 = new Insurance("Allianz"); + Car myCar1 = new Car(Optional.of(myInsurance1)); + Person person1 = new Person(Optional.of(myCar1)); + out.println("My insurance's name is " + getCarInsuranceName(Optional.ofNullable(person1))); + out.println("----------------------------------------"); + Car myCar2 = new Car(Optional.ofNullable(null)); + Person person2 = new Person(Optional.ofNullable(myCar2)); + out.println("My insurance's name is " + getCarInsuranceName(Optional.ofNullable(person2))); + out.println("----------------------------------------"); + } + + static String getCarInsuranceName(Optional maybePerson) { + return maybePerson + .flatMap(Person::getCar) + .flatMap(Car::getInsurance) + .map(Insurance::getName) + .orElse("Unknown"); + } + +} diff --git a/modern-java/src/main/java/org/gym/fp/moderjava/optional/Car.java b/modern-java/src/main/java/org/gym/fp/moderjava/optional/Car.java new file mode 100644 index 0000000..9bf9f79 --- /dev/null +++ b/modern-java/src/main/java/org/gym/fp/moderjava/optional/Car.java @@ -0,0 +1,17 @@ +package org.gym.fp.moderjava.optional; + +import lombok.Getter; +import lombok.ToString; + +import java.util.Optional; + +@ToString +public class Car { + + @Getter + private Optional insurance; + + public Car(Optional insurance) { + this.insurance = insurance; + } +} diff --git a/modern-java/src/main/java/org/gym/fp/moderjava/optional/Insurance.java b/modern-java/src/main/java/org/gym/fp/moderjava/optional/Insurance.java new file mode 100644 index 0000000..4ea8ded --- /dev/null +++ b/modern-java/src/main/java/org/gym/fp/moderjava/optional/Insurance.java @@ -0,0 +1,16 @@ +package org.gym.fp.moderjava.optional; + +import lombok.Getter; +import lombok.ToString; + +@ToString +public class Insurance { + + @Getter + private String name; + + public Insurance(String name) { + this.name = name; + } + +} diff --git a/modern-java/src/main/java/org/gym/fp/moderjava/optional/Person.java b/modern-java/src/main/java/org/gym/fp/moderjava/optional/Person.java new file mode 100644 index 0000000..4ec0b32 --- /dev/null +++ b/modern-java/src/main/java/org/gym/fp/moderjava/optional/Person.java @@ -0,0 +1,18 @@ +package org.gym.fp.moderjava.optional; + +import lombok.Getter; +import lombok.ToString; + +import java.util.Optional; + +@ToString +public class Person { + + @Getter + private Optional car; + + public Person(Optional car) { + this.car = car; + } + +}