import java.util.*;

public class ImmutableVsUnmodifiable {
    public static void main(String[] args) {
        List<String> asli = new ArrayList<>(List.of("Beras", "Gula"));

        // View unmodifiable: read-only, tetapi masih menempel pada list asli.
        List<String> view = Collections.unmodifiableList(asli);

        // Salinan immutable: terputus total dari list asli.
        List<String> beku = List.copyOf(asli);

        asli.add("Kopi"); // mutasi pada list asli yang masih mutable

        System.out.println("asli : " + asli);
        System.out.println("view : " + view);
        System.out.println("beku : " + beku);

        // View read-only tetap menolak modifikasi langsung.
        try {
            view.add("Teh");
        } catch (UnsupportedOperationException e) {
            System.out.println("view.add ditolak : " + e);
        }
    }
}
