[英]Improving my Java method containsSubstring(s1, s2) which finds if s2 is a substring of s1
[英]Method returning a List<T> with parameters List<S1>, List<S2>, where S1 and S2 extends T
我有這個方法:
public static <T> List<T> flat(List<T>... lists){
return Stream.of(lists)
.filter(Objects::nonNull)
.flatMap(List::stream)
.collect(toList());
}
我們的想法是平放列表列表並返回相同類型的列表。
假設A
和B
擴展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>
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]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.