jdk1.8 函数式编程与scala函数式编程区别

1 篇文章 0 订阅
1 篇文章 0 订阅

今天和同事的一番对话,引起了我对java函数式编程和scala函数式编程的思考。

我:       java (x,y)->(x+y) x,y,的类型必须提前定义好吗? 不能说我(int x,long y)->x+y 
同事:如果你说的是函数式编程在java中的使用 则(x,y)->(x+y)必然是一个函数式接口的唯一的一个抽象方法
           那此时x,y的类型一定是确定的。他是使用流中的元素作为唯一固定的参数


我:    唯一固定的参数√明白了。java和scala的函数式编程有根本性的区别
同事:你说一下。函数式编程应该是固定的,不可能会出现你说的这种情况,有区别 概念本质是不会有偏差的
           有的只是方法的实现出现偏差。

我:scala是函数式编程语言,函数是一等公民。
        java 类和对象是一等公民
        scala里允许在流的内部定义参数
        而java 只能是list对象作为唯一参数去创建流

同事:这个 其实java 流是可以改变后面的参数的,map方法其实本质上就是在转化传输的流的元素类型。

我:    可以改变,但不可以另行定义。

函数式编程并不是Java新提出的概念,其与指令编程相比,强调函数的计算比指令的计算更重要;与过程化编程相比,其中函数的计算可以随时调用。

当然,大家应该都知道面向对象的特性(抽象、封装、继承、多态)。其实在Java8出现之前,我们关注的往往是某一类对象应该具有什么样的属性,当然这也是面向对象的核心--对数据进行抽象。但是java8出现以后,这一点开始出现变化,似乎在某种场景下,更加关注某一类共有的行为(这似乎与之前的接口有些类似),这也就是java8提出函数式编程的目的。
 

 

-------------------- 2020/09/18
java1.8使用函数式编程的推手:在计算机资源不再是严重限制时(函数式编程比指令编程更消耗资源),提高开发效率就是一个摆在眼前的问题。

 

Java 认为局部副作用是优质代码的基石;而 FP 认为它们是魔鬼。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值