我有以下方法:

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方法名称和不同的参数。
现在,由于一次又一次重复相同的模式,有没有办法降低代码复杂度?

最佳答案

不容易,也不是没有反射。

使用反射,您可以遍历值列表并在客户端对象中调用适当的方法。这样就可以摆脱复杂性,变得更干净/更健壮。但是,它的执行速度也会变慢。

从根本上来说,尽管您一遍又一遍地执行几乎相同的操作,但操作总是很棘手。

10-01 19:57