当我看到可选项时,我首先想到的是它基本上是来自ml风格语言的Maybe monad。然而,一个真正的monad不应该双重包装东西(
通过“双重可选项”,我指的是类型签名
m(m(a)) == m(a)
)。在什么情况下,您希望有一个双重可选项而不是链接列表结构?通过“双重可选项”,我指的是类型签名
String??
或类似的东西。在我的想法中,这应该自动转换为String?
。
Optional<Optional<T>>
是可以的,并且在需要时你可以展平它们(.flatMap()
会这样做;有点像“绑定”)。 - werediverString?
已经存在的情况下,String??
有什么附加价值。 - Sam Schick