栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kotlin和java中函数作为方法的参数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kotlin和java中函数作为方法的参数

1.Kotlin中使用

在java中有时候使用函数式编程的时候,有这种Producer,Consumer作为函数的参数的场景,在kotlin中的使用记录下;

fun randomProvier(c: (Double) -> Unit): Double {
    var n = Math.random()    //  步骤1:生成随机数
    println("生成随机数")      //  步骤2:
    c(n)                     //  步骤3:随机数n作为参数,执行传入的代码逻辑
    return n                //   步骤4:返回随机数n
}

fun main() {
    randomProvier { t ->
        println("打印随机数参数")  //步骤3.1
        println(t)               //步骤3.1
    }
}

randomProvier的参数是一段执行逻辑,输入参数是一段代码逻辑;先生成一个随机数,然后随机数n作为执行这段代码逻辑的输入参数;之后返回n

如果要一个无参数的代码段逻辑,如下这么写就可以:

fun numberPrinter(s: () -> Double){
    println(s())
}

函数作为参数在项目中的使用场景:需要在原来的多个函数执行逻辑前后加一部分逻辑;

比如原来有个函数

fun f1(){
xxxx
xxx
xx
}

现在需要在f1函数执行前之后加一些逻辑,在最后再加一些逻辑,如果手工添加的话,这样的地方太多,另外还很可能会漏掉,比如只在开头加了一段逻辑,结尾忘记了;可以定义一个方法,

fun main() {
   f2 { f1() }
}

fun f2(c: () -> Unit) {
    println("执行方法之前添加逻辑")
    c()
    println("执行方法后添加逻辑")
}

fun f1(){
    println("原来的逻辑")
}

执行结果输出:

执行方法之前添加逻辑
原来的逻辑
执行方法后添加逻辑

2.Java中使用

java中要区分几种情况:
Function    接受一个输入参数,返回一个结果

public static void main(String[] args) {
        String a="1123";
        f1(b ->{
            return b+"1";
        },a);
    }

    static void f1(Function f2,String a){
        String result = f2.apply(a);
        System.out.println(result);
    }


Supplier    无参数,返回一个结果,调用的时候()-> {xxx;return a;}
Consumer    接受一个输入参数,并且不返回任何结果

Runnable 无参数,无返回结果
BiFunction    接受两个输入参数的方法,并且返回一个结果
BiConsumer    接受两个输入参数的操作,并且不返回任何结果

其他类似

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号