Kann mir jemand helfen, diesen Code zu verstehen?Warum ist es ein Fehler, dass das x als Objekt betrachtet wird, obwohl es auf ein Array verweist?
int[] A = new int[2];
Object x = A; // All references are Objects
A[0] = 0; // Static type of A is array...
x[1] = 1; // But static type of x is not an array: ERROR
Nach der Oracle Java SE Website:
In der Programmiersprache Java, Arrays sind Objekte (§ 4.3.1), wird dynamisch erstellt und können auf Variablen vom Typ Object zugeordnet werden (§4.3.2). Alle Methoden der Klasse Object können in einem Array aufgerufen werden.
Ich verstehe, dass Arrays Object
Typ Variablen zugewiesen werden können, aber meine Verwirrung liegt vielleicht in dem Konzept der Referenz. Wenn wir Object x = A
sagen, sagen wir, dass x
einen Verweis auf das Array A
hat. Meine Verwirrung liegt jedoch in x[1] = 1
. Warum ist es ein Fehler, dass die x
als Object
gilt, obwohl es ein Array referenziert? Denke ich an []
als eine Art von Methode, die nur in der Klasse "Array" zugänglich ist?
Während es wahr ist, dass ein Array ein Objekt ist, sind nicht alle Objekte Arrays. Daher wird der Compiler es Ihnen nicht erlauben, so zu indizieren, als ob es ein Array wäre, wenn es nicht zufällig ist. – Zachary
Sie müssen den Unterschied zwischen Variablentyp und Referenztyp verstehen. Der Compiler weiß nur, dass x ein Objekt ist, nicht mehr und nicht weniger. –
@HovercraftFullOfEels also meinst du, da 'Objekt x' nicht als ein Objekt definiert ist, wird es als eine Variable betrachtet? Wenn ich also "Objekt x = A" definiere, ist dies eine variable Zuweisung im Gegensatz zu einer Referenz? –