The following method add anything to any collection. Why is no runtime exception thrown?
public static <T> void addAnything(Collection<? super T> c, Object t) {
c.add((T) t);
}
For example,
List<String> list = new ArrayList<>();
addAnything(list, "ok");
addAnything(list, 2);
addAnything(list, true);
addAnything(list, new Object())
addAnything(list, new Anything())
Why is there not any exception thrown in this piece of code?