【发布时间】:2019-09-01 14:18:50
【问题描述】:
我有以下方法,我从实体中提取值,然后将其设置为映射中的值作为该映射的值,但我的观点是,对于每个键,我都明确设置值,因此如果密钥增长,方法代码也会增长,我可以根据方法 Map.computeIfPresent 制作一个通用方法,请告知我如何才能实现这两个目标
private void setMap(AbcLoginDTO abcLoginDTO, Map<String, Object> getMap) {
getMap.put("XXNAME", abcLoginDTO.getUsername());
getMap.put("XX_ID", abcLoginDTO.getClientId());
getMap.put("RR_ID", abcLoginDTO.getUserId());
getMap.put("QQ_TIME", abcuserLoginDTO.getLocktime());
}
我在想下面这种方法
static <E> void setIfPresent(Map<String, Object> map, String key, Consumer<E> setter, Function<Object, E> mapper) {
Object value = map.get(key);
if (value != null) {
setter.accept(mapper.apply(value));
}
}
【问题讨论】:
-
你的“XX”、“RR”和“QQ”是什么?哪一列是您的主键 userId 或 ClientID?
-
问题不清楚。您的第二个代码块中的“二传手”是什么?显示的两个块做了非常不同的事情。
-
确实不是很清楚。如果你只是想避免写多个
put,那么我认为这个问题与Java introspection object to map重复
标签: java