AppCommonUtils.optional(customerVO.getPincode()).map(Integer::valueOf).map(mstPincodeCityRepository::findCityByPincode).ifPresent(mstPincode -> {
mstAddress.setPincode(customerVO.getPincode());
mstAddress.setMstCity(mstPincode.getMstCity());
});
对于上面的PMD代码,显示::可能违反了Demeter定律 (方法链调用)
有人可以建议如何删除此PMD警告消息吗?
答案 0 :(得分:0)
问题取决于AppCommonUtils.optional
。该方法将返回您未直接创建的对象,然后进行操作,这违反了该规则。
请参阅:https://pmd.github.io/pmd-6.10.0/pmd_rules_java_design.html#lawofdemeter
由于这是工厂方法,因此此行为是设计使然,而不是问题。我建议您只需suppress it