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
オブジェクトにあり、何を通過させることができますか?