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。
私の最初の考えは、TStringのサブクラスである任意の型を渡すことは許可されていますが、許可されていません。では、実際にはどのタイプがTオブジェクトにあり、何を通過させることができますか?