У меня есть следующий код, который постоянно повторяется. Возможно, есть способ уменьшить его, но я не слишком много знаю о java. Это выглядит так:
public Optional<byte[]> generateReportA(List<ClassThatChange> request){
if(CollectionUtils.isEmpty(request)) {
return Optional.empty();
}
List<ClassThatNOChange> list = new ArrayList<>();
for(ClassThatChange item : request){
ClassThatNOChange c = new ClassThatNOChange()
//here is the line of code that changes from report to report
c.setResult(callMethodA(item.getVariable1(), item.getVariable2()));
list.add(c);
}
return Optional.of(callSameMethod(list));
}
public Optional<byte[]> generateReportB(List<ClassThatChange> request){
if(CollectionUtils.isEmpty(request)) {
return Optional.empty();
}
List<ClassThatNOChange> list = new ArrayList<>();
for(ClassThatChange item : request){
ClassThatNOChange c = new ClassThatNOChange()
//here is the line of code that changes from report to report
c.setResult(callMethodB(item.getVariable2()));
list.add(c);
}
return Optional.of(callSameMethod(list));
}
Единственное, что изменяется, - это callMethodA, или B, или C ... но все они возвращают один и тот же тип ответа.
ClassThatChange выглядит примерно так:
public class Father{
private Date date;
// then the getters and setters
}
public class Son extends Father{
private String description;
// then the getters and setters
}
Все классы, которые могут изменяться, наследуются от отца.
Есть ли способ уменьшить этот повторяющийся код? Извините за мой плохой англи sh.