Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
VariablenWann werden Instanzvariablen initalisiert?
Hallo,
ich habe eine Frage bezüglich der Initalisierung von Variablen. Mal angenommen ich habe diesen Code:
Java:
public class ImageHandler {
private Image bubble = ImageIcon(getClass().getClassLoader().getResource("images/Bubble.gif")).getImage();
public ImageHandler() {
}
}
Wann genau wird nun auf die Bilddatei zugegriffen (Oder auf was auch immer, das war nur ein Beispiel)? Und wo liegt der Unterschied zu einer Initialisierung im Konstruktor, die ja erst bei der Erzeugung des Objekts durchgeführt wird?
wenn du den code compilest und dann wieder decompilest wirst du sehen das der compiler daraus sowas gemacht hat
Java:
public class ImageHandler {
private Image bubble;
public ImageHandler() {
bubble = ImageIcon(getClass().getClassLoader().getResource("images/Bubble.gif")).getImage()
}
}
Anzumerken wäre vielleicht noch, dass im Titel nach einer Klassenvariablen gefragt wurde, der Beispielcode aber garkeine Klassen- sondern eine Instanz-variable enthält. Was von beiden soll jetzt gelten?
Bist du dir da ganz sicher? Ich hatte mal ein Projekt, indem ich eine eigene Klasse FileManager hatte, die im Konstruktor auf verschiedene Dateien zugriff. Wenn ich diese nun in der Main-Klasse im Konstruktor initialisierte gab's kein Problem, habe ich es davor geschrieben gab's nur Stress.
Anzumerken wäre vielleicht noch, dass im Titel nach einer Klassenvariablen gefragt wurde, der Beispielcode aber garkeine Klassen- sondern eine Instanz-variable enthält. Was von beiden soll jetzt gelten?
Sorry, ich bin nicht so fit mit korrekten Bezeichnern. Ich meinte die aus dem Code, also wohl eine Instanzvariable. Wo ist denn da der Unterschied zu einer Klassenvariablen?
@TO
du hast nur nach dem unterschied der initialisierung gefragt ... und da gibt es wirklich keinen unterschied ...
was du jetzt aber willst ist ein unterschied zwischen den DEKLARATIONEN ! ...
da gibt es natürlich sehr wohl unterschiede ... du musst schon die korrekte frage stellen ...
dann schreib das auch so ... und zwar im ersten post ..
sonst musst du dich über falsche antworten nicht wundern ...
im allgemeinen trifft das zu was ich bzw XHelp gepostet haben : es macht unterschiede wo du deklarierst ... aber nicht wo du initialisierst ... da der compiler eh alles in den konstruktor verschiebt ... siehe dazu verlinkte java-insel seite von XHelp ...