Это не разрешено.returnedEvents
содержит список GoogleEvent
объектов и не должен принимать объекты, которые не являются GoogleEvent
объектами.
Хотя в вашем примере вы передаете GoogleEvent
, вы делаетепоэтому, вызывая версию add
, которая принимает все, что реализует IEvent
.Этот add
метод просто не может быть вызван, потому что он может привести к тому, что в списке будут храниться вещи, отличные от GoogleEvent
.
Методы подстановки Java, которые «редактируют» методы, которые нарушают правила таким образом..
Если вам нужно вернуть этот тип списка с подстановочными символами, ArrayList<GoogleEvent>
удовлетворительно его удовлетворяет.
Примечание это полный исходный файл, который компилируется без ошибок:
import java.util.*;
interface IEvent { }
class GoogleEvent implements IEvent { }
public class Foo {
public ArrayList<? extends IEvent> getEventsByDateRange() {
ArrayList<GoogleEvent> returnedEvents = new ArrayList<GoogleEvent>();
returnedEvents.add(new GoogleEvent());
return (returnedEvents);
}
}