Esempi con gli Optional
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user