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
(如图所示)的对象不定义 type T
。
我的第一个想法是,我可以将任何类型作为T
String 的子类传递,但我不是。那么对象中实际上是什么类型T
,我可以通过什么?