Following code works fine while it should not compile.
I am not sure why assignment of a List to String is permitted.
It only happens to List interfaces. Changing to a Array List working fine as expected and it no longer compiles.
public class Test {
public static <T extends List<Number>> T newList() {
return null;
}
public static void main(String[] args) {
String s = newList();
}
}
Please help me understand this behavior.