【发布时间】:2013-09-28 00:47:10
【问题描述】:
scala> class A { type T <: String; def f(a: T) = println("foo")}
defined class A
scala> (new A).f("bar")
<console>:9: error: type mismatch;
found : java.lang.String("bar")
required: _1.T where val _1: A
(new A).f("bar")
^
类A 有一个抽象类型T,但不是抽象类。创建A 的对象(如图所示)不会定义类型T。
我的第一个想法是,我可以将任何类型作为 T 传递,这是 String 的子类,但我不是。那么对象中的T实际上是什么类型,我可以通过什么?
【问题讨论】:
标签: scala abstract-type