Esempi con gli Optional

This commit is contained in:
Fabio Scotto di Santolo
2019-11-28 18:13:31 +01:00
parent 1dcc63c284
commit e968f0352f
4 changed files with 84 additions and 0 deletions

View File

@@ -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<Person> maybePerson) {
return maybePerson
.flatMap(Person::getCar)
.flatMap(Car::getInsurance)
.map(Insurance::getName)
.orElse("Unknown");
}
}

View File

@@ -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> insurance;
public Car(Optional<Insurance> insurance) {
this.insurance = insurance;
}
}

View File

@@ -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;
}
}

View File

@@ -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> car;
public Person(Optional<Car> car) {
this.car = car;
}
}