0

假设,我们有一个带有类型参数的类

class A[T]

我们想编写一个方法,它返回A具有任意类型参数的类型的对象,例如:

def f: A = { ... }

编译器会抱怨 type 缺少类型参数A

我们不能通过编写来解决这个问题A[Any],因为 egA[String]不是 的子类型A[Any]。但是我们可以通过 的协变注释来达到这种子类型关系+T

f是否可以在不使用协变注释的情况下编写这样的方法+T

4

1 回答 1

4

您可以使用存在类型:

def f: A[_] = { ... }

这是以下的简写:

def f: A[T forSome { type T }] = { ... }

您甚至可以使用上限(或下限):

def f: A[_ <: SomeType] = { ... }

您可以为此分配任何类型T,但是,您可能无法对结果做任何有用的事情

于 2012-07-02T11:40:26.060 回答