Kotlin中Java 8 SAM转换有何高级技巧与Java 8对比?

2026-05-26 09:520阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1068个文字,预计阅读时间需要5分钟。

Kotlin中Java 8 SAM转换有何高级技巧与Java 8对比?

什么是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分钟。

Kotlin中Java 8 SAM转换有何高级技巧与Java 8对比?

什么是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是没有类型的,所以他必须需要一个接口来接受他。

阅读全文