У меня есть следующий код:
public Osoba updateOsoba(String input) throws Exception {
class FieldCopier { // in progress....
void updateField() {
}
}
Osoba in = null;
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
in = mapper.readValue(input, Osoba.class);
final int osobaId = Optional
.ofNullable(in.getOsobaId())
.orElseThrow(() -> new Exception("....."));
Osoba os = osobaDao.findOne(osobaId);
if (in.getOsobaImiona() != null) os.setOsobaImiona(in.getOsobaImiona());
if (in.getOsobaNazwisko() != null) os.setOsobaNazwisko(in.getOsobaNazwisko());
//....
return in;
}
Эта конструкция, на мой взгляд, подвержена ошибкам:
if (in.getOsobaImiona() != null) os.setOsobaImiona(in.getOsobaImiona());
У меня есть идея создать функцию, которая сделает это изменение более простым, поэтому я создал внутренний класс FieldCopier с помощью метода updateField ().Я хочу сделать что-то вроде этого:
FieldCopier fc = new FieldCopier();
fc.updateField(in::getOsobaImiona, os::setOsobaImiona)
вместо:
if (in.getOsobaImiona() != null) os.setOsobaImiona(in.getOsobaImiona());
Но я понятия не имею, как реализовать метод updateField (), я хочу использовать ссылку на функцию, но яне знаю какМожно ли сделать это таким образом?Или, может быть, есть лучший способ сделать это?