Kotlin踩坑记

需求:

CompletableFuture的suppayAsync()方法

public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)

kotlin 写法
val executor = Executors.NewExecutors.newFixedThreadPool(Math.min(shops.size, 100)) { r ->
    val t = Thread(r)
    t.isDaemon = true
    t
}
val priceFutures = shops.stream()
        .map { shop ->
            CompletableFuture.supplyAsync(
                    { "${shop.name} price is ${shop.getPrice(shop.name)}" }, executor)
        }.collect(Collectors.toList())

没错吧, kotlin的lambda就是这么写的啊, 可是报错


image01.png

喷了, 单参数的supplyAsync这样写没有问题的啊,


image02.png

想到了IDEA可以将java代码转换成kotlin代码, 妈蛋那我写java版本的转换一下,
java版本
image03.png

转换


image04.png

image05.png

又喷了, 这和我之前自己写的一模一样啊, 依然报错啊. 放大招, 我强转


image06.png

不报错了.运行一下, 结果:
image07.png

强转也不行啊, 这可咋整.
没办法, 只有写匿名内部类了
image08.png

可以了, 也可以运行, 但是, 哎哟我擦, 那条黄线什么意思!


image09.png

再次喷了, 提示我转lambda, 不会还是和之前转的一样吧, 试试
image10.png

哎哟我擦. 要主动构造一个Supplier<String>才可以啊
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,399评论 9 118
  • Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿An...
    蓝灰_q阅读 77,094评论 31 489
  • 写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kot...
    胡奚冰阅读 5,071评论 0 6
  • 中秋快乐。潜意识里希望你在给我多一点儿失望再多一点儿,我马上就要放弃了,就在也不见了,就在也不爱了。 你有你...
    找点儿可乐阅读 1,300评论 0 0
  • Screen:此类设计用于使用屏幕。 screen.create: 创建新屏幕screen.delete: 删除屏...
    差不多先生_tl阅读 2,548评论 0 0