Для каждого значения Constants
(например, Constants.NAME_KQV
) вы можете указать Function<Sample, Object>
(например, sample -> sample.getNodename()
).
Если вы организовали его в структуру, такую как Map
или enum
(здесь я использовал перечисление), вы могли бы получить простой цикл:
public static Map<String, Object> getKqvSecureNodeResponse(Sample secureNodeData, Map<String, Object> map) {
for (Constant constant : Constant.values()) {
final String name = constant.getName();
if (map.containsKey(name)) {
map.put(name, constant.getFunction().apply(secureNodeData));
}
}
return map;
}
Перечисление было определено как:
enum Constant {
NAME_KQV(Constants.NAME_KQV, Sample::getNodename);
// other definitions
final String name;
final Function<Sample, Object> function;
Constant(String name, Function<Sample, Object> function) {
this.name = name;
this.function = function;
}
public String getName() {
return name;
}
public Function<Sample, Object> getFunction() {
return function;
}
}
Кажется, что этот метод делаетмного.(1) Неясно, почему он перекрывает существующие ценности.(2) Имя метода неясно.(3) Вы используете необработанный Map
, замените его как минимум на Map<String, Object>
и выясните, как заменить деталь Object
.(4)
Я чувствую, что переосмысление дизайна поможет гораздо больше, чем описанный выше подход и эти небольшие исправления.