我有以下方法:
private void setClientAdditionalInfo(Map map, Client client, User user) {
Map additionalInfo = (Map) map.get("additionalInfo");
if (checkMapProperty(additionalInfo, "gender")) {
client.setGender(additionalInfo.get("gender").toString());
}
if (checkMapProperty(additionalInfo, "race")) {
client.setRace(additionalInfo.get("race").toString());
}
if (checkMapProperty(additionalInfo, "ethnicity")) {
client.setEthnicity(additionalInfo.get("ethnicity").toString());
}
.....
如果以类似方式使用语句,则还要多12个。唯一的区别是不同的setter方法名称和不同的参数。
现在,由于一次又一次重复相同的模式,有没有办法降低代码复杂度?
最佳答案
不容易,也不是没有反射。
使用反射,您可以遍历值列表并在客户端对象中调用适当的方法。这样就可以摆脱复杂性,变得更干净/更健壮。但是,它的执行速度也会变慢。
从根本上来说,尽管您一遍又一遍地执行几乎相同的操作,但操作总是很棘手。