有關設置,我有:泛型參數返回列表<ChildInterface>在流,但直接的方法調用返回列表<Parent>
interface Parent
interface Child1 extends Parent
interface Child2 extends Parent
和其他地方,我有:
public class MyClass {
private List<Child1> child1List = new ArrayList<>();
public List<Parent> getChild1List(Contact contact) {
return child1List.parallelStream()
.filter(m -> m.getContacts().contains(contact))
.sorted(Comparator.comparing(Parent::getParentField))
.collect(Collectors.toList());
}
}
當我做這個方式,getChild1List返回一個List<Parent>
(不應該它返回List<Child1>
?)
後來,我發現流是有用的其他方法,所以我分機對它進行了檢查並建立了一個通用的方法。我有一個擴展父多個接口,所以我也如下:
private <T extends Parent> List<T> returnsListByContact(List<T> childList, Contact contact) {
return childList.parallelStream()
.filter(m -> m.getContacts().contains(contact))
.sorted(Comparator.comparing(Parent::getParentField))
.collect(Collectors.toList());
}
和getChild1List(Contact contact)
變成了:
public List<Parent> getChild1List(Contact contact) {
return returnsListByContact(child1List, contact);
}
但現在不喜歡這個,理由是getChild1List返回一個List<Child1>
。我不明白爲什麼,因爲流的實現根本沒有改變 - 除了啓動它的childList來自通用參數,而不是直接調用MyClass的私有成員字段。
那麼,爲什麼他們返回兩個不同的東西?
我修正了格式。對內聯代碼使用反引號,並用四個空格縮進來格式化代碼塊。如果您希望代碼顯示四個空格的縮進,則必須添加四個空格將其格式化爲一段代碼,然後爲可見的縮進添加*四個空格。不要使用標籤。 –
謝謝!我無法弄清楚如何讓塊在寫多行時保持穩定。 – NateH06