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[_