import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) {
List<Integer> intList = List.of(1, 2, 3);
List<Double> dblList = List.of(1.5, 2.5, 3.5);
// Producer: can accept List<Integer> or List<Double>
double sum1 = sumNumbers(intList);
double sum2 = sumNumbers(dblList);
System.out.println("Sum of integers: " + sum1);
System.out.println("Sum of doubles: " + sum2);
// Consumer: can accept List<Object> or List<Integer>
intList = new ArrayList<>(intList);
List<Object> objList = new ArrayList<>();
addIntegers(intList);
addIntegers(objList);
System.out.println("objList after adding Integers: " + objList);
System.out.println("intList after adding Integers: " + intList);
}
// PRODUCER: can read Numbers (and subtypes), cannot add new elements.
public static double sumNumbers(List<? extends Number> list) {
double sum = 0.0;
for (Number n : list) {
sum += n.doubleValue();
}
return sum;
}
// CONSUMER: can add Integers (or subtypes), but reading gives only Object
public static void addIntegers(List<? super Integer> list) {
list.add(10);
list.add(20);
Object obj = list.get(0);
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: