※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

4. 型と値と変数

4.1. 型と変数の種類

4.2. プリミティブ型と値

4.3. 参照型と値

4.4. 型変数

4.5. 引数付き型

4.6. 型の抹消

4.7. 具象可能型

4.8. 未加工型

4.9. 交差型

交差型(intersection type)はT 1 & ... & T n (n > 0)の形式をとります。ここでT i (1 ≦ i ≦ n)は型式です。

交差型は捕捉変換型推論の処理中に生じます。プログラムの一部として交差型を直接書くことはできません。これに対する文法はありません。

交差型の値は1≦i≦nに対する全ての型T i の値であるオブジェクトです。

交差型T 1 & ... & T n は以下の通り決定されます。:
  • 各T i (1≦i≦n)に対し、T i <: C i である最も特殊なクラスもしくは配列をC i とします。その時、任意のi(1≦i≦n)に対しC k <: C i であるようなT k <: C k が存在します。なければコンパイル時にエラーとなります。
  • 1≦j≦nに対し、もしT j が型変数ならば、T j 'をT j のpublicメンバーと同じメンバーのインタフェースとします。そうではなく、もしT j がインタフェースならば、T j 'はT j とします。
  • その時、交差型は交差型が現れる同じパッケージ内で宣言された本体のないクラス型と直接スーパークラスC k と直接スーパーインタフェースT 1 '& ... &T n 'と同じメンバーを持ちます。

交差型と型変数の制限の間の区別について詳しく記述する価値があります。全ての型変数の制限は交差型を誘導します。この交差型はしばしば取るに足りません(すなわち、単一の型からなります)。制限の形式は生じる特定の面倒な状況を排除するために制限されます(最初の要素だけはクラスや型変数である場合があり、ただ一つの型変数が制限の中に現れるかもしれません)。しかしながら、捕捉変換は制限がよりジェネラルな(例えば配列)型変数の作成する結果につながることができます。

4.10. サブタイプ化

4.11. 型の使用箇所

4.12. 変数