前端之家收集整理的这篇文章主要介绍了
什么是Java中的monad模拟?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道在
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的所有有用函数.
原文链接:https://www.f2er.com/java/120722.html