Verschachtelte Objekterzeugung

Discordia

Mitglied
Lieb Forengemeinde,
Ich habe eine ganz kurze Frage. Wird ein neues Objekt erzeugt, wenn es als Attribut in einem Objekt steht?

Wenn in TestKlassen ein neues Objekt vom Typen Klasse1 erzeugt wird, wird dann auch automatisch ein Objekt des Typen Klasse2 erzeugt oder wird nur der Speicherplatz dafür reserviert?

Java:
public class TestKlassen {
  public static void main(String[] args) {
    Klasse1 k1;
    k1 = new Klasse1();
  }
}

Java:
public class Klasse1 {
  String name;
  Klasse2 k2;  // Hier steht es als Attribut, wird es auch erzeugt?
}

Java:
public class Klasse2 {
  String name;
}
 
Was Java an der Stelle macht:

Java:
public class Klasse1 {
  String name = null;
  Klasse2 k2 = null; 
}

Beantwortet das deine Frage?^^
 
Java reserviert also nur Speicherplatz im RAM, sodass es für den Datentyp Klasse2 reicht und sperrt den Namen k2? Aber ein neues Objekt mit dem Attribut Name(jetzt bezogen auf Klasse2) wird nicht erzeugt?

Ich müsste jetzt also ein neues Objekt vom Typen Klasse2 erzeugen:

Java:
public class TestKlassen {
  public static void main(String[] args) {
    Klasse1 k1;
    k1 = new Klasse1();
    
    k1.k2 = new Klasse2();  //Neue Zeile
  }
}

Und erst dann wäre wirklich das Objekt in in k1.k2 hinterlegt und ich könnte k1.k2.name abfragen.
 
Das das grad nicht so sinnig ist ist mir schon klar 🙂 Mir gehts wirklich nur um die rohe Theorie 😛 Mir gings nur darum ob Java bei solchen verschachtelten Geschichten anfängt selbst Objekte zu erzeugen. Danke für alle Antworten 🙂
 
es ist völlig egal ob etwas geschachtelt ist oder nicht ... java macht einen klaren unterschied zwischen einer schlichte deklaration und einer kokreten zuweisung ... sowie einer neu-instanzierung mit "new" ...

zu mal "k1.k2" schon gegen "keep scope as small as possible" "verstößt" und man eher mit gettern und settern arbeiten sollte ... würde "k2=new Klasse2();" wenn überhaupt in den konstruktor von Klasse1 gehören
 
Und für sowas muss man nun einen forenbeitrag riskieren?

Wieso kann man sowas nicht ausprobieren?
 

Zurück
Oben