Кто -нибудь понимает, почему следующий код будет хорошо скомпилироваться в Java 7 и ниже, но не сбои с Java 8. < /p>
public static void main(String[] args) throws Exception {
put(get("hello"));
}
public static R get(String d) {
return (R)d;
}
public static void put(Object o) {
System.err.println("Object " + o);
}
public static void put(CharSequence c) {
System.err.println("CharSequence " + c);
}
public static void put(char[] c) {
System.err.println("char[] " + c);
}
< /code>
Метод GET имеет общий тип возврата. В JDK 7 и ниже этого компилируют точные, и выбран метод PUT с параметром объекта. В JDK 8 это не может быть скомпилировано, что указывает на то, что метод POT является неоднозначным. < /P>
Очевидно, что JDK 8 пропускает метод объектного параметра и обнаруживает два последних метода параметра-параметра и жаловаться на них (т.е. если вы добавите другой метод. /> Это похоже на ошибку. < /p>
Подробнее здесь: https://stackoverflow.com/questions/322 ... -ambiguous