使用已知类型参数化类

时间:2016-09-05 16:36:19

标签: scala

为什么下面的两个方法定义没有编译?

b.head应该编译,因为b是"自定义类型"列表。

List[T](a)的类型为List[T],与genericList

相同
type T = Any

type genericList = List[T] 

class usesGenericList[genericList](val a: T, b: genericList){

  def head() = b.head 
  // error: value head is not a member of type parameter genericList

  def returnGenericList: genericList = List[T](a) 
 // error: found: List[$sess.cmd203.T](which expands to)  List[Any] required: genericList

} 

1 个答案:

答案 0 :(得分:1)

您使用type genericList将外部class usesGenericList[genericList]遮挡。只需删除类类型参数。