akios @ ウィキ
4.9. 交差型
最終更新:
akios
-
view
4. 型と値と変数
4.1. 型と変数の種類
4.2. プリミティブ型と値
4.3. 参照型と値
4.4. 型変数
4.5. 引数付き型
4.6. 型の抹消
4.7. 具象可能型
4.8. 未加工型
4.9. 交差型
交差型(intersection type)はT1 & ... & Tn(n > 0)の形式をとります。ここでTi (1 ≦ i ≦ n)は型式です。
交差型の値は1≦i≦nに対する全ての型Tiの値であるオブジェクトです。
交差型T1 & ... & Tnは以下の通り決定されます。:
- 各Ti(1≦i≦n)に対し、Ti <: Ciである最も特殊なクラスもしくは配列をCiとします。その時、任意のi(1≦i≦n)に対しCk <: CiであるようなTk <: Ckが存在します。なければコンパイル時にエラーとなります。
- 1≦j≦nに対し、もしTjが型変数ならば、Tj'をTjのpublicメンバーと同じメンバーのインタフェースとします。そうではなく、もしTjがインタフェースならば、Tj'はTjとします。
- その時、交差型は交差型が現れる同じパッケージ内で宣言された本体のないクラス型と直接スーパークラスCkと直接スーパーインタフェースT1'& ... &Tn'と同じメンバーを持ちます。
交差型と型変数の制限の間の区別について詳しく記述する価値があります。全ての型変数の制限は交差型を誘導します。この交差型はしばしば取るに足りません(すなわち、単一の型からなります)。制限の形式は生じる特定の面倒な状況を排除するために制限されます(最初の要素だけはクラスや型変数である場合があり、ただ一つの型変数が制限の中に現れるかもしれません)。しかしながら、捕捉変換は制限がよりジェネラルな(例えば配列)型変数の作成する結果につながることができます。