001package java8;
002
003import com.sandwich.koan.Koan;
004
005import java.util.Optional;
006
007import static com.sandwich.koan.constant.KoanConstants.__;
008import static com.sandwich.util.Assert.assertEquals;
009
010public class AboutOptional {
011
012    boolean optionalIsPresentField = false;
013
014    @Koan
015    public void isPresent() {
016        boolean optionalIsPresent = false;
017        Optional<String> value = notPresent();
018        if (value.isPresent()) {
019            optionalIsPresent = true;
020        }
021        assertEquals(optionalIsPresent, __);
022    }
023
024    @Koan
025    public void ifPresentLambda() {
026        Optional<String> value = notPresent();
027        value.ifPresent(x -> optionalIsPresentField = true);
028        assertEquals(optionalIsPresentField, __);
029    }
030
031    //use optional on api to signal that value is optional
032    public Optional<String> notPresent() {
033        return Optional.empty();
034    }
035
036    private Optional<String> present() {
037        return Optional.of("is present");
038    }
039}