我在以下代码中遇到了麻烦。

public ArrayList<? extends IEvent> getEventsByDateRange(DateTime minStartTime,  DateTime minEndTime)
{
    ArrayList<? extends IEvent> returnedEvents = new ArrayList<GoogleEvent>();
    returnedEvents.add(new GoogleEvent());
    return (returnedEvents);
}

这将为“returnedEvents.add(new GoogleEvent());代码行”返回以下编译错误:

类型的方法add(capture#1-of?扩展IEvent)
ArrayList不适用于
参数(GoogleEvent)
GoogleEvent类的声明如下:
public class GoogleEvent implements IEvent {...}

我知道在Java中使用泛型有一些棘手的部分,因此使用通配符,但我似乎无法弄清楚。

谢谢。

最佳答案

你为什么不写:

public List<IEvent> getEventsByDateRange(DateTime minStartTime, DateTime minEndTime)
{
    List<IEvent> returnedEvents = new ArrayList<IEvent>();
    returnedEvents.add(new GoogleEvent());
    return returnedEvents;
}

10-01 05:59