记一次使用函数式接口
在我们的日常开发中,经常会遇到外层的代码重复,而内层的代变化,少的时候可以复制粘贴,多了之后就休现出函数式接口的优势了
首页我们定一个函数式接口
SONObject alarmData 重复调用的代码需要传参进去
throws Exception 重复调用的代码会抛出异常
@FunctionalInterface
public interface Action {void perform(JSONObject jsonObject ) throws Exception;
}
调用方(有自定义的代码)
public void process1 (List<ConsumerRecord<?, ?>> records) {callAction(records,(JSONObject jsonObject ) -> {log.info("自定义的代码1"+jsonObject ); });}public void process2 (List<ConsumerRecord<?, ?>> records) {callAction(records,(JSONObject jsonObject ) -> {log.info("自定义的代码2"+jsonObject ); });}public void process3 (List<ConsumerRecord<?, ?>> records) {callAction(records,(JSONObject jsonObject ) -> {log.info("自定义的代码3"+jsonObject ); });}
通用的代码
action.perform(jsonObject); 这里调用函数式接口
private void callAction(List<ConsumerRecord<?, ?>> records, Action action) {for (ConsumerRecord<?, ?> consumerRecord : records) {try {JSONObject jsonObject= JSON.parseObject(consumerRecord.value().toString());action.perform(jsonObject);} catch (Exception se) {}}}