gpt4 book ai didi

java - 返回带有参数 List、List 的 List 的方法,其中 S1 和 S2 扩展 T

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:38 24 4
gpt4 key购买 nike

我有这个方法:

public static <T> List<T> flat(List<T>... lists){
return Stream.of(lists)
.filter(Objects::nonNull)
.flatMap(List::stream)
.collect(toList());
}

想法是扁平化列表列表并返回具有相同类型的列表。

假设AB延伸C .这不起作用:

List<A> listOfA;
List<B> listOfB;
List<C> listOfC = flat(listOfA, listOfB);

因为 List<A>不是 List<C> !

有谁知道如何使用泛型编写平面方法签名来承认我正在尝试做的事情?

谢谢!

最佳答案

如果A延伸C , B延伸C , 然后 List<A>List<B>可分配给 List<? extends C> .

所以你可以这样声明:

public static <T> List<T> flat(List<? extends T>... lists)

测试:

public static void main(String[] args) {
List<String> listOfString = List.of("sss"); // String extends from Object
List<Integer> listOfInt = List.of(1); // Integer extends from Object
List<Object> list = flat(listOfString, listOfInt);
System.out.println(list); // [sss, 1]
}

关于java - 返回带有参数 List<S1>、List<S2> 的 List<T> 的方法,其中 S1 和 S2 扩展 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52042534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com