首页 > 其他分享 >函数式接口作为方法的参数案例和函数式接口作为方法的返回值类型案例

函数式接口作为方法的参数案例和函数式接口作为方法的返回值类型案例

时间:2022-09-25 17:24:11浏览次数:54  
标签:Runnable 函数 接口 案例 参数 startThread 方法

函数式接口作为方法的参数案例:

/*
    假如java.lang.Runnable接口就是一个函数式接口
    假设有一个startThread方法使用该接口作为参数,那么参数就可以使用Lambda进行传参
    这种情况其实和Thread类的构造方法参数为Runnable没有本质区别
 */

//定义一个方法startThread,方法的参数使用函数式接口Runnable
    public static void startThread(Runnable run){
        //开启多线程
        new Thread(run).start();
}

//调用startThread方法,方法的参数是一个接口,那么我们可以传递这个接口的匿名内部类
        startThread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"-->"+"线程启动了1");
            }
        });

        //调用startThread方法,方法的参数是一个函数式接口,所以可以传递Lambda表达式
        startThread(()->{
            System.out.println(Thread.currentThread().getName()+"-->"+"线程启动了2");
        });

        //优化Lambda表达式
        startThread(()-> System.out.println(Thread.currentThread().getName()+"-->"+"线程启动了3"));

 

 

 

函数式接口作为方法的返回值类型案例:

/*
    如果一个方法的返回值类型是一个函数式接口,那么就可以直接返回一个Lambda表达式
    当需要通过一个方法来获取一个java.util.Ccomparator接口类型的对象作为排序器时,就可以调该方法获取
 */

//定义一个方法,方法的返回值类型是一个接口,那么我们可以返回这个接口的匿名内部类
    public static Comparator<String> getComparator(){
        //优化Lambda表达式
        return ((o1, o2) -> o2.length()-o1.length());
}

//创建一个数组
        String[] str = {"aaa","b","ccc","ddd"};
        //输出排序前的数组
        System.out.println(Arrays.toString(str));
        //调用Arrays中的sort方法,对字符串数组进行排序
        Arrays.sort(str,getComparator());
        //输出排序后的数组
        System.out.println(Arrays.toString(str));

 

标签:Runnable,函数,接口,案例,参数,startThread,方法
From: https://www.cnblogs.com/hungui/p/16728197.html

相关文章

  • js 内置函数Date
    从深入潜JavaScript日期对象方法描述*空执行Date()返回当日的日期和时间(字符串)。getDate()orsetDate()get返回月中的第几天(1-31),set设置对象当月天。......
  • 创新案例|市值$400亿的设计平台Canva的增长策略
    澳大利亚在线平面设计工具「Canva」目前估值已达400亿美元,成为全球最有价值初创公司之一。是什么让Canva实现如此高速的增长?本文将通过研究Canva的产品体验创新、付费......
  • py调jenkins接口发布-优化篇
    py调jenkins接口发布-优化篇之前写的文章,python调jenkins接口【https://www.cnblogs.com/windysai/p/16709313.html】,用于晚上10点后自动构建jenkins任务并发通知,但是......
  • C语言第18天,字符串处理函数
    字符串处理函数与printf不同,这些函数不在之前熟悉的头文件stdio.h中。而是在字符串专用的头文件string.h中。1.获取字符串长度strlenstrlen函数可以获取字符数组中的字......
  • 封装axios函数记录
    基于axios进行二次封装统一配置,便于管理下载axiosyarnaddaxios创建utils/request.js//基于axios封装的请求模块importajaxfrom'axios'//新建一......
  • Const修饰类成员函数
    主要说明const类成员函数调用方式以及this指针对应变化SimpleConst.h#pragmaonceclassA{public: inta; intb; constintc; A(inti,intj,intt); ......
  • winform程序如何调用webapi接口?附源码
    我们开发winform程序时,通常使用传统的三层结构,包括:数据层、业务层、页面层。Form页面调用时,直接new个Service类,实现业务需求。但这种模式有个弊端,就是业务逻辑全部放到了客......
  • C语言:求质因数的函数
    #include<stdio.h>voidzys(inta){inti;printf("%d=",a);for(i=2;i<=a;i++){while(a%i==0){printf("%d",i);......
  • Servicemonitor监控自带metrics接口和无metrics接口
    前言:servicemonitor监控存在两种情况:1、有metrics,创建service+servicemonitor配置2、无metrics 配置exporter,exporter进行采集 一、监控自带metrics接口①、部署......
  • JS 高阶函数
    高阶函数:英文叫Higher-orderfunction。JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种......