Non sono sicuro di come la parola chiave new
si comporti in Java. È sicuro che ogni volta che userò la parola chiave new
, verrà creato un nuovo oggetto sull'heap?Ruolo della nuova parola chiave in Java
ho avuto questo dubbio quando studiavo seguente esempio-
class Mixer {
Mixer() { }
Mixer(Mixer m) { m1 = m; }
Mixer m1;
public static void main(String[] args) {
Mixer m2 = new Mixer();
Mixer m3 = new Mixer(m2); // Does it create any new mixer object?
m3.go();
Mixer m4 = m3.m1; m4.go();
Mixer m5 = m2.m1; m5.go();
}
void go() { System.out.print("hi "); }
}
La linea Mixer m3 = new Mixer(m2);
invoca un costruttore che non crea alcun nuovo oggetto. Quindi, non è stato creato nessun nuovo oggetto?
Inoltre, quale variabile si riferisce a quale oggetto alla fine del programma, cioè fino a ottenere NullPointerExcetion
per la variabile m5
.
Cosa ti fa pensare che non crei un nuovo oggetto? –
http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html –
@ DaveNewton- Se il nuovo oggetto viene creato, quale variabile si riferisce a quella? –