Scalaのコヒーレンス(+),逆(-),上界(<:),下界(>:)
コヒーレントcovariant、インバータcontravariant、可変invariant
リスト[T]のようなバンドタイプパラメータのタイプについては、AおよびそのサブタイプBに対して、リスト[B]を満たしてもリスト[A]のサブタイプに該当する場合、covariance(コヒーレンス)と呼ばれ、リスト[A]がリスト[B]のサブタイプである場合、すなわち元の親子関係とは正反対である場合、contravariance(逆)と呼ばれる.
1つのタイプがコヒーレントまたはインバータをサポートする場合、このタイプをvariance(可変または変形に翻訳)と呼び、そうでなければinvariance(可変)と呼ぶ.
Javaでは、汎用タイプはinvariantであり、例えばList
はList