Вывод типа Java: ссылка неоднозначна в Java 8, но не в Java 7

Допустим, у нас есть 2 класса. Пустой классBaseи подкласс этого классаDerived.

public class Base {}

public class Derived extends Base {}

Тогда у нас есть несколько методов в другом классе:

import java.util.Collection

public class Consumer {

    public void test() {
        set(new Derived(), new Consumer().get());
    }

    public <T extends Base> T get() {
        return (T) new Derived();
    }

    public void set(Base i, Derived b) {
        System.out.println("base");
    }

    public void set(Derived d, Collection<? extends Consumer> o) {
        System.out.println("object");
    }

}

Это компилируется и успешно выполняется в Java 7, но не компилируется в Java 8. Ошибка:

Error:(8, 9) java: reference to set is ambiguous
  both method set(Base,Derived) in Consumer and 
  method set(Derived,java.util.Collection) in Consumer match

Почему работает в Java 7, но не в Java 8? Как мог<T extends Base> Когда-либо Коллекция спичек?

Ответы на вопрос(0)

Ваш ответ на вопрос