第2回Scala言語仕様輪読会@scala-beにそなえて、Scala Language SpecificationのChapter 3を読んでいて気づいたのだが、scala.NotNullのサブタイプの型はnullを代入できない型になるのね。Scala知って結構経つが知らなかった。
scala> class A defined class A scala> val a1: A = new A a1: A = A@15e8aa5 scala> val a2: A = null a2: A = null scala> class B extends NotNull defined class B scala> val b1: B = new B b1: B = B@75a340 scala> val b2: B = null <console>:5: error: type mismatch; found : Null(null) required: B val b2: B = null ^