Java8函数式编程

本文介绍了Java中如何使用Lambda表达式简洁地实现只有一个未实现方法的接口,展示了函数式编程的优势。同时,讲解了Function接口的apply方法、compose方法和andThen方法的使用,通过实例演示了它们在字符串操作中的应用。
摘要由CSDN通过智能技术生成

当一个定义的接口只有一个未实现方法时,可以使用lambda表达式来实现此接口。

//新建一个接口
interface Test{
  public void Test1();
}


public static void main(String[] args) {
    Test test = new Test() {
      @Override
      public void Test1() {
        System.out.println("不使用函数式编程的写法");
      }
    };
    test.Test1();
}

结果为:不使用函数式编程的写法

当使用函数式编程可以简化上述写法。

  public static void main(String[] args) {
    Test test1 = new Test() {
      @Override
      public void Test1() {
        System.out.println("不使用函数式编程的写法");
      }
    };
    test1.Test1();
    
    Test test2 = () -> System.out.println("使用函数式编程的写法");

  }
}

打印结果:不使用函数式编程的写法
                   使用函数式编程的写法

Function函数

Function<T,R> 传入的类型是T,返回的类型是R。执行apply方法来执行lambda函数。

还有compose和addThen方法,两个方法的传入参数都是Fuction函数。

  public static void main(String[] args) {
    //R apply(T t) 传入类型为T 返回类型为R
    Function <String,String> function1 = a -> a+"fuction1";
    System.out.println(function1.apply("test"));
    //compose(Function<? super V,? EXTENDS T> before) 接受一个function函数作为传入参数
    Function<String,String> function2 = b -> b+"fuction2";
    String strFuction = function2.compose(function1).apply("test");
    //此处apply传入的参数为fuction1要求的integer类型。并且将fuciton1产生的结过放入fuction2的参数中调用apply方法。
    System.out.println(strFuction);
    System.out.println(function2.andThen(function1).apply("test"));
    //addandThen方法先执行fuction2方法,然后将fuction2方法的返回值传入fuction1再执行。和compose方法执行顺序相反。
  }
}

打印结果:testfuction1
testfuction1fuction2
testfuction2fuction1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值