我知道在 Scala 和许多其他函数式语言中有 monads 主要只是一个接口(interface)实现(例如在带有 flatMap[T] 和 unit[T] 方法的 Scala 中)是否有任何 Java 风格的接口(interface)可以是一个 monad?
最佳答案
在 Java 中表示 monad 有两个问题:flatMap
需要对返回(相同)特定 monad 的函数进行操作,而 Java 的类型系统无法表达这一点。unit
是 Java 术语中的一种静态方法,因为它从泛型值创建一个 monad 实例。 Java 8 在接口(interface)上有静态方法,但是抽象的 monad 接口(interface)无法知道实现,因此您必须在其他地方使用工厂方法(或仅使用构造函数)。
正如@AlexeyRomanov 所建议的那样,您可以实现特定的 monad(例如,创建 Option
接口(interface)),但在 Java 中不可能实现 monad 的抽象概念。这当然意味着您无法创建所有适用于任何 monad 的有用函数。
关于java - 什么是 Java 中的 monad 模拟?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30252705/