Java 8: Ссылка на [метод] является неоднозначной [дублировать]JAVA

Программисты JAVA общаются здесь
Anonymous
Java 8: Ссылка на [метод] является неоднозначной [дублировать]

Сообщение Anonymous »

Кто -нибудь понимает, почему следующий код будет хорошо скомпилироваться в 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

Вернуться в «JAVA»