5

Eclipse API では、戻り値と引数の型はほとんどがコレクションではなく配列です。例として、 を返すmembersメソッド onがあります。IContainerIResources[]

なぜそうなるのか興味があります。おそらく、次のいずれかです。

  1. API は、ジェネリック ジェネリックが利用可能になる前に設計されたため、単なるまたはIResource[]よりも優れていました。CollectionList
  2. メモリの問題。たとえば、ArrayList( の効率的な実装を提供するために) 必要以上のスペースを持つ配列を内部的に保持しているのaddに対し、配列は常に必要なターゲット サイズだけで構築されます。
  3. 配列に要素を追加/削除することはできないため、反復しても安全です (ただし、要素を に設定するなど、要素を変更できるため、防御的なコピーは依然として必要ですnull) 。

APIがそのように開発された理由について、洞察やその他のアイデアを持っている人はいますか?

4

1 に答える 1

1

これを回答として投稿して、受け入れられるようにします。

Eclipseはジェネリックスよりも前から存在しており、APIの安定性に真剣に取り組んでいます。また、低レベルのSWTでは、ラップされているオペレーティングシステムAPIを反映するために配列を渡すために使用されているようです。配列を使用したツールがたくさんできたら、一貫性を保つのが理にかなっていると思います。また、リフレクションを使用する場合、配列は型消去の問題のすべての影響を受けないことに注意してください。

ええ、コレクションAPIは、アイテムの動的リストの操作が一般的にはるかに簡単である限り、聞いています。

于 2012-07-26T13:08:19.327 に答える