3

Anjelika LangerはジェネリックFAQで、ジェネリック型のコード特殊化ではなくコードの再利用を採用するJavaの決定に関して次のように書いています。

コレクション内の要素が参照(またはポインター)である場合、すべての参照(またはポインター)が同じサイズであり、内部的に同じ表現を持っているため、コードの特殊化は特に無駄になります。整数への参照のリストと文字列への参照のリストについては、ほとんど同じコードを生成する必要はありません。両方のリストは、任意のタイプのオブジェクトへの参照のリストによって内部的に表すことができます。コンパイラーは、これらの参照がジェネリック型またはメソッドから受け渡されるときはいつでも、いくつかのキャストを追加する必要があります。Javaではほとんどの型が参照型であるため、Javaがジェネリック型とメソッドの変換の手法としてコード共有を選択するのは当然のことです。

では、最初の質問は、すべての参照が同じサイズであり、内部的に同じ表現を共有しているというのは本当ですか?

答えが本当なら、Javaのすべての参照はどのプロパティを共有しますか?

4

1 に答える 1

2

では、最初の質問は、すべての参照が同じサイズであり、内部的に同じ表現を共有しているというのは本当ですか?

はい。(なぜあなたはアンジェリカ・ランガーのような知識のある人がそれを間違えると想像するのですか?)

答えが本当なら、Javaのすべての参照はどのプロパティを共有しますか?

Objectそれらはすべて、究極のスーパータイプとしてのタイプを持っています。java.lang.Objectしたがって、それらはすべてAPIのすべてのメソッドを提供します。

于 2013-03-09T05:40:26.717 に答える