N Scala応用 型パラと変位

Javaでは全てのクラスがObject型のサブクラスだが、
ScalaではAnyが最上位のクラスで、次にIntなどの値型はAnyValクラス、参照型はAnyRefクラスのサブクラスになる。
図にすると、

http://joelabrahamsson.com/PageFiles/148/1310_1644.jpg

引用元:

Learning Scala part eight – Scala’s type hierarchy and object equality

 といった流れ。

 

型パラメータの前につくプラス+とかマイナスーは、変位指定という。
プラスは共変といい、javaでいうextends。
マイナスは反変といい、javaでいうsuper。

 

共変は引数に指定できず、反変は返り値に指定できない。

理由は下記リンク。

 

hogepiyo.hatenablog.jp