Как я могу напечатать для Collection & lt ;? super Some & gt ;?

def get_overlap(r1,r2):
    latest_start=max(r1[0],r2[0])
    earliest_end=min(r1[1],r2[1])
    delta=(earliest_end-latest_start).days
    if delta>0:
        return delta+1
    else:
        return 0
0
задан Jin Kwon 13 July 2018 в 04:53
поделиться

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<>();

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

0
ответ дан Jin Kwon 17 August 2018 в 13:40
поделиться
  • 1
    И какова цель сбора коллекции в качестве параметра? Как выбрать, когда вы вызываете метод, тип коллекции у вас есть List, Set, ..? – azro 13 July 2018 в 06:40
  • 2
    Если это ваш предполагаемый прецедент, просто используйте public <T extends Collection<Some>> T some(..., Supplier<T> s) { return getStream().collect(toCollection(s)); }. Затем вы можете написать List<Some> list = some(..., ArrayList::new); – Holger 13 July 2018 в 11:31
Другие вопросы по тегам:

Похожие вопросы: