import java.util.List;

public class Penjumlah {
    // Producer: daftar hanya dibaca. Bound ? extends Number mengizinkan
    // List<Integer>, List<Double>, List<Long>, dan semua turunan Number.
    static double jumlahkan(List<? extends Number> angka) {
        double total = 0.0;
        for (Number nilai : angka) {   // dibaca sebagai Number, bukan Object
            total += nilai.doubleValue();
        }
        return total;
    }

    public static void main(String[] args) {
        List<Integer> bulat = List.of(10, 20, 30);
        List<Double> pecahan = List.of(1.5, 2.5);
        List<Long> panjang = List.of(100L, 200L);

        System.out.printf("Bulat   : %.1f%n", jumlahkan(bulat));
        System.out.printf("Pecahan : %.1f%n", jumlahkan(pecahan));
        System.out.printf("Panjang : %.1f%n", jumlahkan(panjang));
    }
}
