import java.util.Optional;

public class PerilakuOrElse {

    static int panggilan = 0;

    // Supplier yang meninggalkan jejak setiap kali dieksekusi
    static int nilaiPengganti() {
        panggilan++;
        System.out.println("  -> nilaiPengganti() dieksekusi, panggilan ke-" + panggilan);
        return 60;
    }

    public static void main(String[] args) {
        Optional<Integer> nilai = Optional.of(85);

        System.out.println("orElse dengan nilai tersedia:");
        int a = nilai.orElse(nilaiPengganti());
        System.out.println("  hasil = " + a + ", total panggilan = " + panggilan);

        System.out.println("orElseGet dengan nilai tersedia:");
        int b = nilai.orElseGet(() -> nilaiPengganti());
        System.out.println("  hasil = " + b + ", total panggilan = " + panggilan);
    }
}
