2016-09-28 2 views
-1

Wenn Array in Java ein Objekt ist, dann können nach dem OOPS-Prinzip nur Klassen Objekte haben. Also meine Frage ist Array sind eigentlich Objekte welcher Klasse?Array ist ein Objekt welcher Klasse genau

+1

https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.8 –

+1

Ein Array keine Instanz einer Klasse ist, ist es ein Sprachkonstrukt mit der Funktionalität, eine Sammlung/eine Liste von Elementen eines bestimmten Typs zu halten – devnull69

+0

@ devnull69 "Ein Array ist keine Instanz einer Klasse" False. Versuchen Sie, 'someArray.getClass()' oder 'new String [0] instanceof String []' aufzurufen. –

Antwort

1

lesen JLS Sec 10.8:

Jedes Array hat ein zugeordnete Klassenobjekt mit allen anderen Anordnungen mit dem gleichen Komponententyp geteilt.

Obwohl ein Array-Typ keine Klasse ist, wirkt das Klassenobjekt jeden Array als ob:

  • Die direkten Ober jeden Array-Typ-Objekt ist.

  • Jeder Array-Typ implementiert die Schnittstellen Cloneable und java.io.Serializable.

A String[] ist eine Instanz von String[].class; Ein int[] ist eine Instanz von int[].class usw. Und das sind verschiedene Klassen von String.class und int.class.

Aber es gibt keine „Array“ Superklasse aller Arrays, wie in der ersten Kugel beschrieben: beide String[] und int[] direkte Subklassen von Object sind.

Ideone demo

+0

Wie also in den meisten Nachschlagewerken erwähnt wird, dass Array ein Objekt ist und keine weiteren Diskussionen da sind. – learner8269

+0

@AnuragDubey das ist nicht unwahr: Arrays sind Referenztypen und so sind sie Unterklassen von 'Object'. Sie lassen wahrscheinlich die weiteren Details weg, um es einfach zu halten. –

+0

Danke. Ich hatte auch Zweifel bezüglich String [], int [] usw. Wie können wir wissen, was die Methoden dieser Klassen sind, da ich keine Java-API für dasselbe finden konnte? @AndyTurner –

Verwandte Themen