コレクションの中でも特殊なものだ。配列と一対一で対応する。それに比べて多くの機能を提供する。配列はジェネリックであることができる。定義することができる。配列は列の演算の全てをサポートする。配列で実装されているのに、どのようにして新たな機能をサポートしてるのだろうか。その前のバージョンではその問に対する答が変わってくる。オブジェクトの間を変換していた。作成された場合、非常に複雑なものとなる。不可解な特殊ケースなどもあり、配列演算の性能特性は予想不可能なものとなった。設計はより単純なものだ。全てのコンパイラの魔法は無くなった。配列はあたかも列であるようなふりをしない。子クラスではないため、それは不可能というものだ。クラスで「ラッピング」する暗黙の変換が行われる。暗黙の変換があるため、配列と列に互換性があることを示す。メソッドを使うことで実現できる。それを解除したときに、同一の配列が得られることを示す。配列に適用されるもう一つの暗黙の変換がある。この変換は単に列メソッドの全てを配列に「追加」するだけで、配列自身を列には変換しない。型のオブジェクトにラッピングされることを意味している。短命で、列メソッドを呼び出し終えた後にはアクセス不可能となり、そのメモリ領域はリサイクルされる。このようなオブジェクトの生成そのものを省略できる。返っているのが分かる。返るため、この結果は論理的だ。クラスの値を定義することはありえない。オブジェクトは暗黙の変換により自動的に導入されるからだ。先の例で暗黙の変換により導入されたものだ。優先させたのかということだ。メソッドをサポートする型へ変換するものだ。二つの暗黙の変換には優先順序が付けられているというのがこの問への答だ。変換よりも高い優先順位が与えられている。子クラスや子オブジェクトで定義される暗黙の変換は、親クラスで定義される暗黙の変換に対して優先される。定義されるものが選ばれる。文字列まわりにも似た仕組みがある。これで、配列において列との互換性および全ての列メソッドのサポートを実現しているかが分かったと思う。ジェネリック性についてはどうだろう。どのように実装されるのだろう。どれか、もしくはオブジェクトの配列である可能性がある。配列に対して正しい型演算が実行される。この型判定は配列演算を多少遅くする。3〜4倍遅いと思っていい。最高の性能を必要とするなら、ジェネリック配列ではなく具象配列を使ったほうがいいことを意味する。いくらジェネリック配列を実装しても、それを作成する方法がなければ意味が無い。これは更に難しい問題で、あなたにも少し手を借りる必要がある。この問題を説明するのに、配列を作成するジェネリックなメソッドの失敗例を見てほしい。xs内の偶数位置にある全ての要素から成る新しい配列を返す。本文一行目にて、引数と同じ型を持つ戻り値の配列が定義されている。プリミティブ型の配列か、参照型の配列であるかもしれない。ランタイムはどのようにして正しいものを選択するのだろう。対応する実際の型は実行時に消去されてしまうため、与えられた情報だけでは選択することができない。型パタメータの実際の型が何であるかの実行時のヒントを提供することが必要とされている。型のクラスマニフェストという形をとる。クラスマニフェストとは、型の最上位クラスが何であるかを記述する型記述オブジェクトだ。型の完全マニフェストというものもある。配列の作成にはクラスマニフェストで十分だ。コンパイラは、指示を出すだけでクラスマニフェストを自動的に構築する。いう、より短い別の構文を使うことで型がクラスマニフェストを連れてくることを要求できる。改訂版は全く同じことを意味する。value)、を検索する。暗黙の値が見つかれば、正しい種類の配列を構築するのにマニフェストが使用される。見つからなければ、その前の例のようにエラーが発生する。メソッドの暗黙のパラメータに渡した。コンパイラは全ての具象型についてクラスマニフェストを構築できるが、引数そのものがクラスマニフェストを持たない型パラメータである場合はそれができない。関するクラスマニフェストを要求するが、見つからなかったのだ。型の暗黙のパラメータの略記法であることが分かる。要約すると、ジェネリックな配列の作成はクラスマニフェストを必要とする。関する暗黙のクラスマニフェストも提供する必要がある。ConductLicenseSocialGitHubTwitter。