2

私の理解では、ObjectはJavaのクラスでもあります。だから、どうやって書くことができるのですか

Object ob = new Integer[2];

ではなく

Integer i = new Integer[2];

単一の参照obが整数の配列を指すことができるのに、型の参照がIntegerできないのはどうしてですか?

4

4 に答える 4

5

すべての配列がオブジェクトだからです。したがって、ポリモーフィズムの規則では、Integer[](の配列Integer)はに格納できますObjectが、明らかにInteger[](の配列Integer)はに格納できませんInteger

于 2012-11-11T15:15:14.040 に答える
3

すべての配列はのサブタイプであるためですObject。ただし、のサブタイプである配列はありませんInteger

于 2012-11-11T15:16:38.460 に答える
3

からJLS#Chapter 10. Arrays

Javaプログラミング言語では、配列はオブジェクト(§4.3.1)であり、動的に作成され、タイプObject (§4.3.2)の変数に割り当てることができます。クラスObjectのすべてのメソッドは、配列で呼び出すことができます。

配列のすべてのコンポーネントは、配列のコンポーネントタイプと呼ばれる同じタイプを持っています。配列のコンポーネントタイプがTの場合、配列自体のタイプはT[]と記述されます。

于 2012-11-11T15:20:29.067 に答える
1

上の次の式は:-RHSを作成するのでarray object

new Integer[2];

したがって、LHSの参照型は、配列への参照を保持できるように互換性がある必要があります。

ここで、arrayJavaではのサブタイプでObjectあるため、Object型は配列への参照を保持できます。ただし、Integerもちろん参照はを指すことはできませんarray

それで、

Object ob = new Integer[2]; // is valid. as `Object` type reference can point to an array object
Integer i = new Integer[2]; // is not valid. as `Integer` type reference cannot point to an array object.
于 2012-11-11T15:14:18.747 に答える