import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

public class EmpatReferensi {
    public static void main(String[] args) {
        // Bentuk 1: static method reference -- Class::methodStatic
        Function<String, Integer> parser = Integer::parseInt;
        System.out.println(parser.apply("42") + 58);

        // Bentuk 2: bound instance method reference -- instansi::method
        Consumer<String> pencetak = System.out::println;
        pencetak.accept("Dicetak lewat method reference");

        // Bentuk 3: unbound instance method reference -- Class::methodInstansi
        Function<String, Integer> ukuran = String::length;
        System.out.println(ukuran.apply("deklaratif"));

        // Bentuk 4: constructor reference -- Class::new
        Supplier<List<String>> pabrikDaftar = ArrayList::new;
        List<String> daftar = pabrikDaftar.get();
        daftar.add("satu");
        daftar.add("dua");
        System.out.println(daftar);
    }
}
