를 반환, 내가 가진일반 매개 변수 설정을위한 목록 <ChildInterface> 스트림에 있지만, 직접 메소드 호출이 반환 목록 <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의 private 멤버 필드에 대한 직접 호출이 아닌 일반 매개 변수를 통해 이루어 졌다는 점만 제외하면 말입니다.
왜 두 가지 다른 것을 반환합니까? getChild1List
의 리턴 타입 결정 -
서식이 수정되었습니다. 인라인 된 코드는 역 인용 부호를 사용하고 4 블록 씩 들여 쓰기를하면 코드 블록을 포맷 할 수 있습니다. 코드에 4 개의 들여 쓰기를 표시하려면 4 개의 공백을 추가하여 코드 블록으로 형식화 한 다음 들여 쓰기를 표시 할 * 추가 * 4 공백을 추가해야합니다. 탭을 사용하지 마십시오. –
감사! 여러 줄을 쓸 때 블록을 견고하게 유지하는 방법을 알 수 없었습니다. – NateH06