Scalaの変位指定アノテーションと上限・下限境界がわからない
LL脳には辛い。
説明を読んでるときには、「なるほどなー」、と思うんだけど、いざ出てくると「どういう意味だっけ…」ってなるし、「いつ使えばいいんだ…」ってなってる。
classだけではなくて、defにも使えるので、混乱する。。。
とりあえずこれは理解した。
class Aaa class Bbb extends Aaa class Ccc extends Bbb class D[T >: Bbb] val dAaa = new D[Aaa] // dAaa: D[Aaa] = D@4b2bac3f val dBbb = new D[Bbb] // dBbb: D[Bbb] = D@4988d8b8 val dCcc = new D[Ccc] // error: type arguments [Ccc] do not conform to class D's type parameter bounds [T >: Bbb] class E[T <: Bbb] val eAaa = new E[Aaa] // error: type arguments [Aaa] do not conform to class E's type parameter bounds [T <: Bbb] val eBbb = new E[Bbb] // eBbb: E[Bbb] = E@2cd2a21f val eCcc = new E[Ccc] // eCcc: E[Ccc] = E@3514a4c0
上限境界と下限境界は、定義したクラスとかメソッドとかに渡す時にチェックするってことかな。