Kotlin中Java 8 SAM转换有何高级技巧与Java 8对比?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1068个文字,预计阅读时间需要5分钟。
什么是SAM(Single Abstract Method)转换?实际上,这是Java 8中提出的一个概念。简单来说,SAM就是把一个接口只有一个抽象方法的接口转换成函数式接口。比如,将一个方法的接口转换为一个lambda表达式接口。以线程池ExecutorService为例,其构造方法ExecutorService executorService=Executors.newSingleThreadExecutor()就是一个SAM转换的例子。
什么是sam 转换
Single Abstract Method 实际上这是java8中提出的概念,你就把他理解为是 一个方法的接口 的就可以了
看一下我们每天都在使用的线程池
ExecutorService executorService= Executors.newScheduledThreadPool(3); executorService.execute(new Runnable() { @Override public void run() { System.out.println("hello world"); } });
用下面的java8中的lambda 来写 也是可以的。
xecutorService.execute(()->System.out.println("hello world"));
所以说 这两种写法是 等价 的。 但是这里要强调的是 java中的lambda是没有类型的,所以他必须需要一个接口来接受他。
本文共计1068个文字,预计阅读时间需要5分钟。
什么是SAM(Single Abstract Method)转换?实际上,这是Java 8中提出的一个概念。简单来说,SAM就是把一个接口只有一个抽象方法的接口转换成函数式接口。比如,将一个方法的接口转换为一个lambda表达式接口。以线程池ExecutorService为例,其构造方法ExecutorService executorService=Executors.newSingleThreadExecutor()就是一个SAM转换的例子。
什么是sam 转换
Single Abstract Method 实际上这是java8中提出的概念,你就把他理解为是 一个方法的接口 的就可以了
看一下我们每天都在使用的线程池
ExecutorService executorService= Executors.newScheduledThreadPool(3); executorService.execute(new Runnable() { @Override public void run() { System.out.println("hello world"); } });
用下面的java8中的lambda 来写 也是可以的。
xecutorService.execute(()->System.out.println("hello world"));
所以说 这两种写法是 等价 的。 但是这里要强调的是 java中的lambda是没有类型的,所以他必须需要一个接口来接受他。

