[英]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.