Как я могу печатать для коллекции<? супер некоторые>?

У меня есть метод, похожий на этот.

public void some(..., Collection<? super Some> collection) {
    // WOOT, PECS!!!
    final Stream<Some> stream = getStream();
    stream.collect(toCollection(() -> collection));
}

И как я могу сделать так, чтобы этот метод возвращал данный экземпляр коллекции безопасно?

Я попробовал это.

public <T extends Collection<? super Some>> T some(..., T collection) {
    final Stream<Some> stream = getStream();
    stream.collect(toCollection(() -> collection)); // error.
    return collection; // this is what I want to do
}

1 ответ

Я нашел, что должен сделать это

public <T extends Collection<Some>> T some(..., T collection) {
    final Stream<Some> stream = getStream();
    stream.collect(toCollection(() -> collection));
    return collection; // this is what I want to do
}

Так что я могу сделать это

List<Some> list = some(..., new ArrayList<>();

Я хотел бы объяснить.

Другие вопросы по тегам