我正在研究一个特征然后我发现了我不理解的这种语法
trait Holder[H <: service.SealedHolder[H]] {
val personId: String //ID.03
}
我想这可能是一个通用声明,但仍然对这个 scala 语法感到困惑Holder[H <: service.SealedHolder[H]]
我正在研究一个特征然后我发现了我不理解的这种语法
trait Holder[H <: service.SealedHolder[H]] {
val personId: String //ID.03
}
我想这可能是一个通用声明,但仍然对这个 scala 语法感到困惑Holder[H <: service.SealedHolder[H]]
你是对的,它是一个泛型声明,它H
是SealedHolder[H]
.
您可以阅读有关类型边界 https://apiumhub.com/tech-blog-barcelona/scala-type-bounds/ 和 F-bounded polymorphism https://tpolecat.github.io/2015/04/29/f-bounds .html
例如,F-bounds 与 trait Ordered
https://www.scala-lang.org/api/2.12.2/scala/math/Ordered.html一起使用
case class OrderedClass(n:Int) extends Ordered[OrderedClass] {
def compare(that: OrderedClass) = this.n - that.n
}