现在我的特质有一个额外的类型T除了确保B
和R
具有相同的泛型类型之外没有其他用途。
trait GenericBuilder[T <: Any, B <: Builder[T], R <: Result[T]]
为了简化声明,我想知道在保持类型严格性的同时是否有办法在这种情况下消除T
。
编辑:我无法控制Builder
或Result
代码 - 它们是从外部的一些java工件中提取的。
答案 0 :(得分:2)
如果您只是想简化声明的那一部分,您可以将类型移动到成员中,但最后您必须购买更多信息,因为您需要证明类型是相同的:
trait Builder {
type T
}
trait Result {
type T
}
trait GenericBuilder[B <: Builder, R <: Result] {
val w: B.T =:= R.T
}