为什么"Option"上的"contains"方法使用带有下限而不是"Any"类型的第二种类型?

Boo*_*mah 7 scala

我正在查看Scala中的Option类,并且遇到了contains方法:

final def contains[A1 >: A](elem: A1): Boolean
Run Code Online (Sandbox Code Playgroud)

选项是协变的,所以我理解它不能只使用A作为elem的类型.但是,鉴于A1类型从未使用过,为什么方法不能这样:

final def contains(elem: Any): Boolean
Run Code Online (Sandbox Code Playgroud)

这只是一种风格还是我错过了一些重要的东西?

kir*_*uku 3

没有什么原因,只是一个疏忽。事实上,它甚至不是唯一的一个。Either.joinRight例如还包含不必要的下限。但因为删除它们意味着破坏源代码和二进制兼容性,所以到目前为止还没有发生。