【JDK 8-函数式编程】4.3 Consumer

[一、Consumer 接口](#一、Consumer 接口)

二、使用

[Stage 1: 创建方法,实现 Consumer 接口](#Stage 1: 创建方法,实现 Consumer 接口)

[Stage 2: 调用方法](#Stage 2: 调用方法)

[Stage 3: 执行结果](#Stage 3: 执行结果)

[三、List 的 foreach](#三、List 的 foreach)

执行结果


一、Consumer 接口

  • 消费型接口 : 将T作为输入,无返回值

  • **调用方法 :**void accept(T t);

  • **用途 :**因为没有出参,常用于打印、发送短信等消费动作

  • 典型应用,集合的 foreach

java 复制代码
/**
 *
 * @param <T> the type of the input to the operation
 */
@FunctionalInterface
public interface Consumer<T> {
    void accept(T t);
}

二、使用

Stage 1: 创建方法,实现 Consumer 接口

java 复制代码
    public static void sendMsg(String phone, Consumer<String> consumer) {
        consumer.accept(phone);
    }

Stage 2: 调用方法

java 复制代码
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

@Slf4j
public class ConsumerFunc {
    public static void main(String[] args) {
        Consumer<String> consumer = obj -> {
            log.info(obj);
            log.info("调用短信接口、发送短信、打印日志等");
        };
        sendMsg("134XXXXXXXX", consumer);

    }

    public static void sendMsg(String phone, Consumer<String> consumer) {
        consumer.accept(phone);
    }
}

Stage 3: 执行结果

三、List 的 foreach

java 复制代码
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

@Slf4j
public class ConsumerFunc {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
        list.forEach(s -> log.info(s));

    }
}

执行结果

相关推荐
伯恩bourne3 分钟前
对比 @Configuration(Full) vs @Component(Lite)
java·开发语言
软件开发技术深度爱好者3 分钟前
ndexTTS-2和 CosyVoice之TTS(Text-to-Speech)使用python示例
开发语言·python
RuoyiOffice5 分钟前
达梦 DM8、openGauss、人大金仓怎么选?RuoYi Office 国产数据库适配与验收指南
java·数据库·spring boot·架构·信创
修船大队长6 分钟前
KL15 高电平请求 FullCom:AUTOSAR 项目调用流程
android·java·服务器
棉猴8 分钟前
玩游戏学Python12-布尔型与条件语句
java·前端·python·玩游戏·游戏编程·pgzero
晚枫歌F8 分钟前
dpdk实现arp协议,icmp协议-----架构优化
开发语言·javascript·架构
java_nnnn11 分钟前
Spring Web MVC 入门:从一个 URL 到 Java 后端完整处理请求
java·前端·spring boot·spring
Mikko714 分钟前
fastjson 1.2.84 能在 JDK 7 上跑吗?实测:编译能过,一启动就 UnsupportedClassVersionError
java·后端·jdk·fastjson·安全漏洞
G018_star sky♬19 分钟前
为什么java新建一个对象,需要obj o = new obj()这种写法
java·开发语言
星恒讯工业路由器23 分钟前
工业网络设备选型:导轨式、机架式与车载式的部署差异
开发语言·网络·数据库·php·工业路由器·导轨式·车载式