JAVA1.8使用方法/函数作为参数传递,使用FunctionalInterface解决方法多参数问题

Java1.8新特性,把方法/函数作为参数传递,可以提高开发的效率,减少代码冗余。

1.单参数方法/函数传递。

就是要传递的方法只需要一个参数

示例:(TestUtil是当前类哈,改成自己的就好了)

    //单参数函数传递
    public static String test(String v1){
        System.out.println(v1);
        return v1 ;
    }
    public static String functionTest(String v1, Function<String, String> function){
        String v = function.apply(v1);
        return v;
    }
    public static void main(String[] args) {
        functionTest("哈哈", TestUtil::test);
    }

上诉的使用就是单参数的函数传递。test的是我们需要传递的函数,我们可以看到test这个函数还需要一个参数,所以我们这里需要声明一个新的方法functionTest,作为调用时参数和函数式参数的入口。

        1.代码中的Function类,是JRE的默认的声明函数参数类,import java.util.function.Function;

        2.Function<String,String>,这个尖括号里面包含了两个泛型(其实可以是n个,下文会讲),第一个泛型是参数,第二个(最后一个)是泛型返回结果。参数类型和结果类型自己根据实际情况修改。

        3.String v = function.apply(v1),此处的就是去调用传递的函数,v1就是传递函数所需要的参数。

问题来了,如果是多参数函数传递,如何调用呢?

2.多参数方法/函数传递。

如果还是使用JDK默认的Function类是不行的,它这个默认只能解决单参数函数的传递。如果是多参数就要使用到@FunctionalInterface这个注解了。我们需要使用这个注解,声明一个接口。

示例:(TestUtil是当前类哈,改成自己的就好了)

    //多参数,函数传递

    //声明多参数函数式接口
    @FunctionalInterface
    interface Function2 <A, B, R> {
        public R apply (A a, B b);
    }

    public static String function2Test(String v1, String v2, Function2<String, String ,String> function2){
        String v = function2.apply(v1, v2);
        return v;
    }

    public static String test2(String v1, String v2){
        System.err.println(v1 + v2);
        return v1 + v2 ;
    }
    
    public static void main(String[] args) {
        function2Test("哈哈", "呵呵", TestUtil::test2);
    }

我们声明的这个Function2接口,里面声明了,两个参数,一个返回结果的抽象方法,A、B就是参数类型,R就是返回结果类型。所以,参数的多少,自己根据实际情况处理。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值