Можно, но вряд ли это сделает код более читабельным. С Stream.forEach()
:
List<SubjectRole> subjectRoleList = new ArrayList<>();
subjectRoles.stream()
.forEach(t -> {
SubjectRole subjectRoleStream = new SubjectRole();
subjectRoleStream.setSubjectRole(t.getSubjectRole());
subjectRoleList.add(subjectRoleStream);
});
}
return subjectRoleList;
Вы можете использовать .map()
/ .collect()
, чтобы API Streams управлял выделением List
:
List<SubjectRole> subjectRoleList =
subjectRoles.stream()
.map(t -> {
SubjectRole subjectRoleStream = new SubjectRole();
subjectRoleStream.setSubjectRole(t.getSubjectRole());
return subjectRoleStream;
})
.collect(Collectors.toList());
return subjectRoleList;
Для большей краткости, вам нужно как-то объединить создание и атрибут, установленный для одного вызова (метода или конструктора). Если метода не существует, вы можете создать частного помощника:
private static List<SubjectRole> getSubjectRoles(List<ca.payment.simulator.model.api.SubjectRole> subjectRoles) {
List<SubjectRole> subjectRoleList =
subjectRoles.stream()
.map(t -> copy(t))
.collect(Collectors.toList());
return subjectRoleList;
}
private static SubjectRole copy(SubjectRole in) {
SubjectRole out = new SubjectRole();
out.setSubjectRole(in.getSubjectRole());
return out;
}