繁体   English   中英

使用相同代码但输入参数不同的重构方法

[英]Refactoring methods that use the same code but different input params

我有这两种方法。 有人可以帮我重构并使它们通用吗?

public void method1(Map<String,String> map, String key, String value){
  map.put(key, value);
}

public void method2(GenericRecord recordMap, String key, String value){
  recordMap.put(key, value);
}

无法重构它。

一种可能性是使用BiConsumer接口 我们可以使用这个接口来实现我们需要的put逻辑:

static <K, V> void add(BiConsumer<K, V> consumer, K key, V value) {
  consumer.accept(key, value);
}

并这样称呼它:

add(map::put, key, value);
add(record::put, key, value);

如果我们愿意,我们可以定义重载的便利方法:

static <K, V> void add(Map<K, V> map, K key, V value) {
  add(map::put, key, value);
}

static <K, V> void add(GenericRecord<K, V> record, K key, V value) {
  add(record::put, key, value);
}

像现在一样调用这些方法。

创意演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM