Ich entwickle ein GUI-Programm, in dem ich Klassen, die ActionListeners zusammenfassen, nach Funktionalität erstellt habe. Meine Frage bezieht sich darauf, wie die JVM jButtons behandelt, denen derselbe ActionListener hinzugefügt wurde.Java, Referenzvariablen, die auf das gleiche Objekt im Speicher verweisen
Zuerst; Ich bin mir bewusst, dass die JVM Speicher sparen kann, indem zwei Referenzvariablen, die auf eine identische Zeichenfolge verweisen (zum Beispiel), auf dasselbe Zeichenfolgenobjekt im Speicher zeigen.
public class Example {
String str1 = "SomeString";
String str2 = "SomeString";
}
Jetzt ist meine Frage: Wenn ich sage, sagen wir 5 jButtons. Allen Schaltflächen wurde der gleiche ActionListener hinzugefügt. Wenn das Programm ausgeführt wird, werden ihnen 5 separate, identische Instanzen derselben Klasse hinzugefügt? Oder wird die JVM etwas Ähnliches tun (wie oben erwähnt)?
- Vielen Dank im Voraus :)
Wenn Sie uns zeigen, was Sie tun, können wir Ihnen sagen, was passieren wird. Oder Sie können es selbst ausprobieren. Ihre Frage ist verwirrend - wenn Sie das gleiche ActionListener-Objekt an fünf verschiedene Schaltflächen übergeben, warum sollten Sie dann denken, es würde sich in fünf Objekte aufteilen? –
Danke für Ihre Antwort. In meinem Beispiel meinte ich; Wenn ich explizit fünf verschiedene Objekte zu fünf verschiedenen Schaltflächen hinzufüge - optimiert die JVM den Speicherplatz und lässt sie dasselbe Objekt teilen. –
In diesem Fall, nein. Die JVM führt solche Objekte nicht zusammen. Strings sind ein Sonderfall. Sie könnten jedoch denselben ActionListener für mehrere Schaltflächen verwenden. –