Frage zu new
-
Das ist total unschön. Er erzeugt ein neues Array vom Typ X mit der selben Größe des übergebenen Arrays (X[] x).
-
Hab ich doch recht gehabt !!! Heute morgen ham wir darüber diskutiert...
Und jedesmal wird der Constructor nochmal aufgerufen, richtig ?
-
Nein, es wird lediglich das Array angelegt. Jedes Array-Element muss dann explizit den Konstruktor via new aufrufen. Also
x[0] = new X;
[ Dieser Beitrag wurde am 16.01.2003 um 16:02 Uhr von CengizS editiert. ]
-
Mh.
Aber das neu angelegte Array ist noch mit den alten Werten "gefüllt" ? Ich kann damit direkt weiterarbeiten, oder ?
-
Hmmm das sollte nicht sein. Du holst Dir ja im Prinzip eine neue Startadresse.
-
Original erstellt von Headhunter:
**
Aber das neu angelegte Array ist noch mit den alten Werten "gefüllt" ? Ich kann damit direkt weiterarbeiten, oder ?**Ein neues Array wird erstmal automatisch von vorne bis hinten mit "null" gefüllt. ...bzw. 0, wenn die Elemente primitive Datentypen sind.
-
Also hab ich ein Objekt der Klasse, *ohne* ihren Konstruktor aufgerufen zu haben ??
Das ist mir aber suspekt
-
Nein, du hast nur ein Array das Objekte vom Typ X halten kann. Mehr nicht...
-
Danke, jetzt hab ichs verstanden
-
Ein Beispiel (anlehnend an Deinen Entwurf)
[java]public class X
{
public X(String name) {
System.out.println("X() called with Name '"+name+"'");
}public void p (X[] x)
{
x = new X [x.length]; //<-- so, was macht das ?
for (int i=0; i<x.length; ++i) {
System.out.println(x[i]);
}
}
}[/code] Das ist also die Klasse mit der ominösen Methode p(X[] x) und nun das Startprogramm ... [java]public class Y
{
public static void main (String args[]) {
X myX = new X("Main-Object");
X[] xArray = new X[5];
xArray[0] = new X("temp_1");
xArray[1] = new X("temp_2");
xArray[2] = new X("temp_3");
xArray[3] = new X("temp_4");
xArray[4] = new X("temp_5");
myX.p(xArray);
}
}[/code]Wenn Du es ausführen lässt wirst Du folgenden Output bekommen:X() called with Name 'Main-Object' X() called with Name 'temp_1' X() called with Name 'temp_2' X() called with Name 'temp_3' X() called with Name 'temp_4' X() called with Name 'temp_5' null null null null null
[ Dieser Beitrag wurde am 16.01.2003 um 17:05 Uhr von CengizS editiert. ]
-
jo, soll beides ein grosses X sein!!:)