Scala 有界泛型类型与多态性



在scala中,以下泛型类型,

def input[T <: SubType](inp: T) = { }

可替换为多态定义

def input(inp: SubType) = { }

我们什么时候应该选择第一种风格和第二种风格?有什么情况吗?

考虑以下方法:

def input[T <: SubType](inp: T): T = ???

现在,inp的精确类型将保留在返回类型中。在另一种样式中,您将始终将Subtype作为返回类型,而不是更具体的内容。

因此,如果您需要访问编译器已知的最精确的inp类型,则基本上需要第一种样式。再比如:

def input[T <: SubType : SomeTypeclass](inp: T) = ???

最新更新