私の理解では、ObjectはJavaのクラスでもあります。だから、どうやって書くことができるのですか
Object ob = new Integer[2];
ではなく
Integer i = new Integer[2];
単一の参照obが整数の配列を指すことができるのに、型の参照がIntegerできないのはどうしてですか?
私の理解では、ObjectはJavaのクラスでもあります。だから、どうやって書くことができるのですか
Object ob = new Integer[2];
ではなく
Integer i = new Integer[2];
単一の参照obが整数の配列を指すことができるのに、型の参照がIntegerできないのはどうしてですか?
すべての配列がオブジェクトだからです。したがって、ポリモーフィズムの規則では、Integer[](の配列Integer)はに格納できますObjectが、明らかにInteger[](の配列Integer)はに格納できませんInteger。
すべての配列はのサブタイプであるためですObject。ただし、のサブタイプである配列はありませんInteger。
Javaプログラミング言語では、配列はオブジェクト(§4.3.1)であり、動的に作成され、タイプObject (§4.3.2)の変数に割り当てることができます。クラスObjectのすべてのメソッドは、配列で呼び出すことができます。
配列のすべてのコンポーネントは、配列のコンポーネントタイプと呼ばれる同じタイプを持っています。配列のコンポーネントタイプがTの場合、配列自体のタイプはT[]と記述されます。
上の次の式は:-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.