加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

什么是Java中的monad模拟?

发布时间:2020-12-14 05:56:13 所属栏目:Java 来源:网络整理
导读:我知道在 Scala和许多其他函数式语言中,monad主要只是一个接口实现(例如在Scala中使用flatMap [T]和unit [T]方法)是否有任何 Java风格的接口可以是monad? 解决方法 在Java中表示monad有两个问题: flatMap需要对返回(相同)特定monad的函数进行操作,而Java的
我知道在 Scala和许多其他函数式语言中,monad主要只是一个接口实现(例如在Scala中使用flatMap [T]和unit [T]方法)是否有任何 Java风格的接口可以是monad?

解决方法

在Java中表示monad有两个问题:

flatMap需要对返回(相同)特定monad的函数进行操作,而Java的类型系统不能表达它.

unit在Java术语中是一种静态方法,因为它从通用值创建monad实例. Java 8在接口上有静态方法,但是抽象monad接口不能知道实现,所以你必须在其他地方使用工厂方法(或者只使用构造函数).

正如@AlexeyRomanov建议的那样,您可以实现特定的monad(例如,创建一个Option接口),但是Java中不可能使用monad的抽象概念.这当然意味着您无法创建适用于任何monad的所有有用函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读