Java8 的函数式编程支持,我学习后觉得很沮丧和鸡肋

2019-10-10 19:16:07 +08:00
 zazalu

不知道是我问题还是什么,就感觉怪怪的

10845 次点击
所在节点    Java
72 条回复
dk7952638
2019-10-11 12:11:14 +08:00
lambda 很优雅很装逼,但你看过他的实现方式之后你就会发现性能堪忧,想优雅还是直接 scala 吧,java 就不是干这事的
Narcissu5
2019-10-11 12:19:19 +08:00
lambda 好不好,请去看下 lambda 之前无数的匿名类
taotaodaddy
2019-10-11 12:26:49 +08:00
java 的 fp 实现堪称是见过的颇不优雅
@Senventise 还真是。。。我重说

java 的 fp 实现实在是不优雅呢
ipwx
2019-10-11 13:22:57 +08:00
去看看 Vert.x 吧。

函数式对 CRUD 确实可能没啥用。但是对很多高级编程范式,还是很有用的。
ipwx
2019-10-11 13:24:56 +08:00
@lazyfighter 上百行的 stream,写成普通形式不是要上千,不还是一样不容易懂。

这种长长长的 stream 不该合理地分块、拆句子、加注释么?

当然如果你说大部分 Java 程序员写不出容易看懂的 stream,那你的逻辑就和 go 语言那帮拥簇一样了:既然用不好,就砍掉呗(手动斜眼)。我反正不喜欢这样的哲学,我更喜欢 Scala 和 C++ 那种,菜全都端上来了,吃那些,自己看着办。
optional
2019-10-11 13:40:55 +08:00
java lambda 最恶心的是 checked exception
zazalu
2019-10-11 13:49:42 +08:00
@optional 和这个有什么关系吗?
yukongzz
2019-10-11 13:49:55 +08:00
可以看看 kotlin
optional
2019-10-11 13:57:28 +08:00
@zazalu 大部分 fp interface 都不带 throw
sevenstone
2019-10-11 14:09:22 +08:00
Scala 欢迎你
zazalu
2019-10-11 14:09:48 +08:00
@optional 嗯,但是这个自己实现一个不就好了吗(擦汗)
lazyfighter
2019-10-11 14:14:49 +08:00
@ipwx stream 拆开写就不舒服了啊, 本来就是一个句子但是拆开了人为使他易读写着就不舒服了,所以我把它定位为写着爽读着累。另外我的观点是这样的,好比我写代码的时候不写注释,我看代码的时候骂别人不写注释,啊哈哈哈哈哈哈
aguesuka
2019-10-11 14:29:37 +08:00
@zazalu stream 只接受 jdk 的接口作为参数,而且 function 的 default 方法写不写都不好
slanternsw
2019-10-11 14:37:11 +08:00
函数式不好 x
java 的函数式不好 √
uleh
2019-10-11 15:33:08 +08:00
作为一个从 JDK 1.4 用过来的 java 程序员,表示 lambda 真香……
Cstone
2019-10-11 15:40:40 +08:00
函数式真的很香,没了函数式,没法用流没法链式操作,整个代码都会变得丑陋不堪
mrobot
2019-10-11 16:04:42 +08:00
个人项目 上上上上真香
团队项目 确实很怪 最好别写花里胡哨的代码 保重大家都看的懂能跑起来就行 减少沟通成本
djFFFFF
2019-10-11 16:12:22 +08:00
@Orenoid 有但是用的不多,list comprehension 是被认为更 pythonic (可以理解为更有情怀)的方式
CononYc
2019-10-11 16:23:18 +08:00
一开始我也是这么认为的,函数式看着头大,后面了解多了之后就感觉真香,真好用
hitsmaxft
2019-10-11 17:00:27 +08:00
只是从 api 上改善了对 lambda 支持而已。别提什么函数式。这么去看就释然了。

1. 支持 lambda 写法的匿名接口实现,不用显示写匿名类实现。(仅限于单个实现方法的接口,多个方法就嗝屁了)
2. 提供 function 包,这样子第三方有了公共的 api,大伙都可以快乐地玩高阶函数了,不用动不动一堆类。
3. stream api 改善一些并发和列表处理的延迟计算的实现,基于 1,可以大大减少代码量

只是提供了函数式的 api/语法糖 ,参考了函数式的一些优点。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/607994

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX