Scala 是否可以使用任意类型参数定义返回类型?

Scala 是否可以使用任意类型参数定义返回类型?,scala,types,Scala,Types,假设我们有一个带有类型参数的类 class A[T] 我们想写一个方法,返回带有arbritrary类型参数的a类型的对象,如: def f: A = { ... } 编译器将抱怨类型A缺少类型参数 我们不能通过编写A[Any]来解决这个问题,因为例如A[String]不是A[Any]的子类型。但是我们可以通过协变注释+T来达到这种子类型关系 在不使用协变注释的情况下,是否可以编写这样的方法f?您可以使用存在类型: def f: A[_] = { ... } 这是以下的简写: def f:

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

class A[T]
我们想写一个方法,返回带有arbritrary类型参数的
a
类型的对象,如:

def f: A = { ... }
编译器将抱怨类型
A
缺少类型参数

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


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

您可以使用存在类型:

def f: A[_] = { ... }
这是以下的简写:

def f: A[T forSome { type T }] = { ... }
您甚至可以使用上限(或下限):


def:A[\p>您可以使用存在类型:

def f: A[_] = { ... }
这是以下的简写:

def f: A[T forSome { type T }] = { ... }
您甚至可以使用上限(或下限):

定义f:A[_