私の理解では、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の参照型は、配列への参照を保持できるように互換性がある必要があります。
ここで、array
Javaではのサブタイプで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.