Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设,我们有一个带有类型参数的类
class A[T]
我们想编写一个方法,它返回A具有任意类型参数的类型的对象,例如:
A
def f: A = { ... }
编译器会抱怨 type 缺少类型参数A。
我们不能通过编写来解决这个问题A[Any],因为 egA[String]不是 的子类型A[Any]。但是我们可以通过 的协变注释来达到这种子类型关系+T。
A[Any]
A[String]
+T
f是否可以在不使用协变注释的情况下编写这样的方法+T?
f
您可以使用存在类型:
def f: A[_] = { ... }
这是以下的简写:
def f: A[T forSome { type T }] = { ... }
您甚至可以使用上限(或下限):
def f: A[_ <: SomeType] = { ... }
您可以为此分配任何类型T,但是,您可能无法对结果做任何有用的事情
T