Hallo,
ich weiss bereits was statisch heisst und wozu man es benutzt bei Variablen und Methoden, doch bei ganzen Klassen bin ich mir noch unsicher.
Man kann quasi die gesamte Klasse statisch machen, indem man verhindert, dass ein Objekt erstellt werden kann (privater Konstruktor). Dann ist es nur noch möglich die statischen Variablen und Methoden zu benutzen.
Wenn ich nun Klassen habe, bei denen ich ganz sicher sagen kann, dass ich immer nur eine Instanz davon brauche, ist es dann nicht sinnvoll diese Klasse auch komplett statisch zu machen?
Ein Beispiel:
Bei dieser Klasse rufe ich das Fenster einfach über show() auf und gebe einen Text mit. Dieses Fenster kommt immer nur alleine vor. Es gibt keine Kopien.
Ist es wie in diesem Beispiel sinnvoller lieber Objekte zu erstellen oder mit static zu arbeite? Ich habe auch Fenster, die der Benutzer nur einmal öffnen soll und da muss ich auch immer prüfen, ob das Fenster schon geöffnet wurde. Das könnte man ja statisch relativ leicht lösen, da es auch von überall aus zugänglich ist.
Oder gilt generell nicht static zu benutzen wenn es geht?
Danke!
ich weiss bereits was statisch heisst und wozu man es benutzt bei Variablen und Methoden, doch bei ganzen Klassen bin ich mir noch unsicher.
Man kann quasi die gesamte Klasse statisch machen, indem man verhindert, dass ein Objekt erstellt werden kann (privater Konstruktor). Dann ist es nur noch möglich die statischen Variablen und Methoden zu benutzen.
Wenn ich nun Klassen habe, bei denen ich ganz sicher sagen kann, dass ich immer nur eine Instanz davon brauche, ist es dann nicht sinnvoll diese Klasse auch komplett statisch zu machen?
Ein Beispiel:
Java:
public class StatusFenster {
private static final long serialVersionUID = 1L;
private static JLabel label = new JLabel();
private static JFrame f = new JFrame();
static {
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("Status");
JPanel panel = new JPanel();
panel.add(label);
f.add(panel);
f.pack();
f.setLocationRelativeTo(null);
}
//Verhindert, dass ein Objekt von StatusFenster gebildet werden kann
private StatusFenster(){}
public static void show(String text)
{
label.setText(text);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void setText(String text)
{
label.setText(text);
f.pack();
f.setLocationRelativeTo(null);
}
public static void hide()
{
f.setVisible(false);
}
}
Bei dieser Klasse rufe ich das Fenster einfach über show() auf und gebe einen Text mit. Dieses Fenster kommt immer nur alleine vor. Es gibt keine Kopien.
Ist es wie in diesem Beispiel sinnvoller lieber Objekte zu erstellen oder mit static zu arbeite? Ich habe auch Fenster, die der Benutzer nur einmal öffnen soll und da muss ich auch immer prüfen, ob das Fenster schon geöffnet wurde. Das könnte man ja statisch relativ leicht lösen, da es auch von überall aus zugänglich ist.
Oder gilt generell nicht static zu benutzen wenn es geht?
Danke!