{
String s1 = ex1(); // compile ok
String s2 = ex2(); // not compile
}
public static <T extends List> T ex1(){
return (T) new ArrayList<>();
}
public static <T extends ArrayList> T ex2(){
return (T) new ArrayList<>();
}
Почему выводится тип в ex1()? И почему не выводится, в таком случае, тип для ex2?
https://youtu.be/H5WlE8BK5sI?t=40m44s
Если кому-то поможет, выяснилось, что это известный баг джавки. Пруфы тут https://bugs.openjdk.java.net/browse/JDK-8153577
Обсуждают сегодня