【发布时间】:2018-09-28 15:47:12
【问题描述】:
我有闲置代码:
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(),我想使用对函数的引用但我不知道如何。有可能这样做吗?或者也许有更好的方法来做到这一点?
【问题讨论】:
-
也许这个答案可以解决你的问题:stackoverflow.com/questions/1301697/…
标签: java spring hibernate entity