Either usage example.

This commit is contained in:
Paweł Dyda 2022-11-17 14:46:47 +01:00
parent 979d80a56a
commit ad3998bb61

View File

@ -0,0 +1,37 @@
package pl.amu.edu.demo.either;
import io.vavr.control.Either;
import pl.amu.edu.demo.data.Person;
import java.time.LocalDate;
import static java.util.Objects.isNull;
public class EitherExample {
public static void main(String[] args) {
new EitherExample().run();
}
private void run() {
var balbina = Person.builder()
.displayName("Gąska Balbinka").birthDate(LocalDate.ofYearDay(1959, 1)).build();
var poziomka = Person.builder()
.displayName("magic Poziomka").build();
var maybeBalbinasAge = getAge(balbina);
var maybePoziomkasAge = getAge(poziomka);
System.out.printf("Is Balbinas age empty? %s\n", maybeBalbinasAge.isEmpty());
System.out.printf("Is Poziomkas age empty? %s\n", maybePoziomkasAge.isEmpty());
System.out.printf("Balbinas age: %d\n", maybeBalbinasAge.get());
System.out.printf("Poziomkas error: %s\n", maybePoziomkasAge.getLeft());
}
private Either<ProcessingError, Integer> getAge(Person person) {
if (isNull(person.birthDate)) {
// konwencja: błędy po lewej
return Either.left(ProcessingError.of("No birthdate!"));
}
return Either.right(person.getAge());
}
}