java的函数表达式_Java函数式编程、lambda表达式

Java函数式编程、lambda表达式

Java8开始支持函数式编程、包括lambda表达式、Stream流。

函数式编程用于简化开发,对于某些类,或许只使用一次,那么就没必要对其进行单独的实现一个类,java原本提供了简化的方案,如内部类、匿名内部类等。

lambda对此更加简化。

函数式接口

函数式接口就是只有一个方法的接口,想想函数是不是一个个是独立的。

Runnable接口就是一个函数式接口,如下:

@FunctionalInterface

public interface Runnable {

public abstract void run();

}

//@FunctionalInterface注解代表这是一个函数式接口,但不是必须的,加上注解jvm会帮助检查。

// public abstract void run();中的abstract也可以省略,接口中的方法本就是抽象方法

使用了函数式接口后,就不需要实现类,直接使用lambda即可。

lambda表达式

lambda用于替代实现类,形式如下:

FunctionalInterface func=()->{

......

};

实例

函数式接口

@FunctionalInterface

interface Func{

void hello();

}

lambda表达式

public class LambdaDemo {

public static void main(String[] args) {

Func func=()->{

System.out.println("hello");//lambda表达式

};

func.hello();//调用方法

}

}

带返回值

直接在抽象方法前加上返回类型,在lambda中有返回值即可。

public class LambdaDemo {

public static void main(String[] args) {

Func func=()->{

System.out.println("hello");

return "ok lambda";

};

String s = func.hello();

System.out.println(s);

}

}

@FunctionalInterface

interface Func{

String hello();

}

带参数

参数声明在抽象方法中,在lambda中加上类型即可:

public class LambdaDemo {

public static void main(String[] args) {

Func func=(int a,String c)->{

System.out.println("hello"+a+c);

return "ok lambda";

};

String s = func.hello(8,"yes");

System.out.println(s);

}

}

lambda中的数据类型可以略去

Func func=( a,c)->{

System.out.println("hello"+a+c);

return "ok lambda";

};

如果只有一个参数的话,连()都可以省略。

public class LambdaDemo {

public static void main(String[] args) {

Func func=c->{ //lambda省去()

System.out.println("hello "+c);

return "ok lambda";

};

String s = func.hello("yes");

System.out.println(s);

}

}

@FunctionalInterface

interface Func{

String hello(String b);

}

内置函数式接口

JDK 1.8为我们预定义了许多函数式接口,它们位于java.util.function包中。

常用的如下:

序号

接口名

抽象方法

说明

1

Supplier

Tget()

无输入参数,通过一系列操作产生一个结果返回

2

Consumer

voidaccept(Tt)

一个输入参数,针对参数做一系列操作,无返回值

3

Function

Rapply(Tt)

一个参数,一个返回值,针对参数生成一个返回值

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值