nur 1 Instanz 1 Klasse --> static?

Status
Nicht offen für weitere Antworten.

-frank

Bekanntes Mitglied
hi,
angenommen ich habe ein x-beliebiges programm, in dem es klassen gibt, von denen ich garantiert immer nur eine instanz brauche (auch bei eventuellen erweiterungen), auf die aber mehrere andere klassen zugreifen müssen.
zb die JDesktopPane des Hauptfensters einer GUI-Anwendung. wenn der user in anderen JComponents etwas tut, soll etwas in der JDesktopPane dargestellt werden (oder dergleichen).

bisher habe ich mir nie viele gedanken drüber gemacht, da ich einfach der anderen Klasse die Referenzen auf benötigte Klassen übergebe und damit hat sichs. wenn ich das obejtk in vielen konstruktoren drin hatte, wurde es mir aber zu blöd und ich hab die klasse static gemacht. nun wollte ich wissen, ob es sich in so einem fall immer anbietet, static objects zu verwenden, also mit klassen-variablen und methoden statt instanzvariablen. so muss man ja keine referenzen übergeben. oder gibt es spezielle situationen, wann man dies macht und wann doch?
wenn ich ein objekt habe, dessen referenz ich nicht weitergeben muss, das aber auch garantiert "allein" bleibt (also nur 1 instanzobjekt), macht ihr es dann static oder nicht?

danke!
 

Reeny

Aktives Mitglied
Ich mache auf jeden Fall alle Konstanten static. Ganze Konstanten-Sammlungen lege ich in einem Interface an

Code:
public interface Constants{
    public static final int RIGHT = 1;
    public static final int LEFT = 2;
    ...
}

Aber auch zum Beispiel ein Haupt-Programm-Fenster, damit ich leichter darauf zugreifen kann. Aber ich bezweifle, dass das wirklich guter Programmierstil ist. :?
 

foobar

Top Contributor
@Reeny Das public final static kannst du dir in einem Interface sparen, denn diese Modifier werden automatisch gesetzt. Deshalb sind Interfaces ja so beliebt um darin Konstanten zu speichern ;-)
 

Wildcard

Top Contributor
Nein, guter Stil ist es wirklich nicht.
Leichter Zugriff verführt dazu ein Objekt öfter zu benutzen als eigentlich notwendig. Bei Referenzen überlegt man sich schon eher ob man die wirklich durchschleifen muss.
Dabei entsteht eine ganze Reihe von dependencies die man praktisch nicht mehr aus dem Programm entfernen kann.
static sollte nur für Konstanten und Utility Klassen verwendet werden, während man zum Beispiel Factories häufig zu Singeltons macht.
Hier ist aber vorsicht geboten, das Singelton Pattern sollte sehr sehr sparsam verwendet werden.
Klassen auf die sich zu leicht zugreifen lässt tendieren dazu im laufe der Zeit aufgebläht zu werden, besonders wenn eine GUI im Spiel ist.
Insofern würde ich dir raten weiter Referenzen zu übergeben (aber nur wo das wirklich nötig ist) :wink:
 

byte

Top Contributor
foobar hat gesagt.:
@Reeny Das public final static kannst du dir in einem Interface sparen, denn diese Modifier werden automatisch gesetzt. Deshalb sind Interfaces ja so beliebt um darin Konstanten zu speichern ;-)

Und man kann dann auch recht komfortabel die Konstanten bei Bedarf typisieren:

Code:
public interface Constant {

	public interface ConstantTypeA extends Constant {
		final int CONST_ONE = 1;
		final int CONST_TWO = 2;
	}
	
	public interface ConstantTypeB extends Constant {
		final int CONST_THREE = 3;
		final int CONST_FOUR = 4;
	}
	
}

bzw. mit SE5 auch:

Code:
public interface Constant {

	public enum ConstantTypeA implements Constant {
		CONST_ONE, CONST_TWO
	}
	
	public enum ConstantTypeB implements Constant {
		CONST_THREE, CONST_FOUR
	}
	
}
 

byte

Top Contributor
Pre Java 5 sicher eine gute Sache. Jetzt würde ich aber Enums empfehlen. Damit kann man echt ne Menge anstellen.

Nur ein Beispiel:

Code:
TimeUnit.MILLISECONDS.sleep(100);
 

André Uhres

Top Contributor
byto hat gesagt.:
Pre Java 5 sicher eine gute Sache. Jetzt würde ich aber Enums empfehlen..
Ja, natürlich. Enums sind auch nichts anderes als eine Weiterentwicklung des Konzeptes der "konstanten Objekte".
Sozusagen ein "alter Hut" (AlArenal) in neuer Ausfertigung. Sie haben im Rahmen des Tigers viele Vorzüge:
sie sind einfacher zu deklarieren, man kann sie in switch Statements benutzen und im for-each Konstrukt,
sie implementieren das Comparable Interface...
Aber da hier im Forum von Einigen schon bemängelt wurde, daß zu sehr auf Java 5 gepocht wird,
der noch nicht überall verfügbar ist, ist der "Alte Hut" sicher immer noch aktuell und gegenüber weniger attraktiven
Lösungen in Erwägung zu ziehen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
T Auf Instanz der selben Klasse aus überschriebener Methode in Methode zugreifen. Java Basics - Anfänger-Themen 2
I Instanz einer anderen Klasse zurückgeben Java Basics - Anfänger-Themen 34
F Mehrere Instanzen der Klasse A EINER Instanz der Klasse B übergeben Java Basics - Anfänger-Themen 3
F OOP Instanz einer Klasse an eine andere weitergeben Java Basics - Anfänger-Themen 16
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
M Neu instanzierte Klasse übernimmt Werte von anderer Instanz Java Basics - Anfänger-Themen 4
P Instanz mit .add Methode von einer Klasse zur anderen? Java Basics - Anfänger-Themen 6
S Klassen Instanz anderer Klasse raus geben Java Basics - Anfänger-Themen 1
B Klassen Auf Instanz anderer Klasse zugreifen Java Basics - Anfänger-Themen 1
S Methoden eine Instanz einer eigenen Klasse als parameter übergeben Java Basics - Anfänger-Themen 9
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
C Klassen Zugriff auf Instanz einer anderen Klasse Java Basics - Anfänger-Themen 9
F Array als Instanz einer Klasse Java Basics - Anfänger-Themen 8
P Klassen Instanz einer Klasse in ihrer eigenen Definition erzeugen? möglich? Java Basics - Anfänger-Themen 4
pindakaas Instanz einer Klasse in einer anderen erzeugen Java Basics - Anfänger-Themen 6
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
A Instanz einer Klasse Java Basics - Anfänger-Themen 2
S Instanz(en) einer Singleton-Klasse Java Basics - Anfänger-Themen 11
S OOP Warum gleiche Instanz der Klasse? (Factory-Muster) Java Basics - Anfänger-Themen 13
A Stilfrage: statische Variable mit Instanz der gleichen Klasse Java Basics - Anfänger-Themen 8
D Wie neue Instanz einer Klasse erstellen, von der ich nur eine andere Instanz kenne? Java Basics - Anfänger-Themen 13
G Name der Instanz einer Klasse. Java Basics - Anfänger-Themen 2
E Eine Klasse hat eine Instanz von sich selbst. Java Basics - Anfänger-Themen 6
W zugriff auf jframe klasse und deren instanz geht nicht? Java Basics - Anfänger-Themen 11
F Socket Instanz auf Klasse welche von Socket erbt zuweisen Java Basics - Anfänger-Themen 3
M Von Instanz auf instanzierende Klasse zugreifen Java Basics - Anfänger-Themen 5
D Instanz einer Klasse in einer anderen klasse erzeugen Java Basics - Anfänger-Themen 3
P Zugriff auf Instanz in der anderen Klasse geht nicht! Java Basics - Anfänger-Themen 4
S will instanz einer Klasse erzeugen - mach irgendwas falsch Java Basics - Anfänger-Themen 6
J Brett vorm Kopf - Klasse aufrufen/instanz *?* Java Basics - Anfänger-Themen 11
H Instanz einer Klasse übergeben und dynamisch auswerten Java Basics - Anfänger-Themen 3
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
O Mit Instanz von Oberklasse auf Unterklasse zugreifen Java Basics - Anfänger-Themen 2
T Inhalt aus TextField in Attribut einer Instanz schreiben Java Basics - Anfänger-Themen 5
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
BadBat Klassen instanz als variable + methodenaufruf Java Basics - Anfänger-Themen 4
T Auf Instanz einer Liste zugreifen Java Basics - Anfänger-Themen 2
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
W Methoden Methode ohne Parameter auf Instanz eines Objekts aufrufen? Java Basics - Anfänger-Themen 14
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
U JavaFX eine Vbox Instanz pro Pane? Java Basics - Anfänger-Themen 2
D Instanz einer Subklasse anhand deren Superklasse Java Basics - Anfänger-Themen 5
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
O OOP Methoden bei erstellen einer Instanz und mehr Java Basics - Anfänger-Themen 4
E Von Instanz des Dialogs auf das Frame zugreifen Java Basics - Anfänger-Themen 8
kaoZ Android Programmierung / Erstellen einer neuen Instanz Java Basics - Anfänger-Themen 2
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
G Undefined Instanz/Konstruktoraufruf Java Basics - Anfänger-Themen 8
S Ein Attribut/Instanz eines bestehendes Objektes mit SETTER Methode ändern Java Basics - Anfänger-Themen 3
M Initialisierungsblock beim Erzeugen einer Instanz Java Basics - Anfänger-Themen 6
J Instanz durch String Java Basics - Anfänger-Themen 8
U final Instanz Java Basics - Anfänger-Themen 11
O Erste Schritte Klassenname zurückgeben, keine instanz Java Basics - Anfänger-Themen 23
0 Log4J Instanz erzeugen Java Basics - Anfänger-Themen 2
K Methoden Zustand innerhalb einer Instanz ändern Java Basics - Anfänger-Themen 2
B Geerbte Instanz kann keine void Methode ausführen?! Java Basics - Anfänger-Themen 15
L Instanz Problem Java Basics - Anfänger-Themen 4
E ActionListener erkennt instanz nicht Java Basics - Anfänger-Themen 9
M JRadioButton keine Instanz von ButtonModel Java Basics - Anfänger-Themen 10
O zugriff auf eine Instanz Java Basics - Anfänger-Themen 8
U Instanz aufrufen Java Basics - Anfänger-Themen 3
Antoras eine Instanz von mehrere Klassen aus nutzen Java Basics - Anfänger-Themen 2
D Servlet kann nicht auf Instanz zugreifen Java Basics - Anfänger-Themen 10
G neue Instanz von ArrayList Java Basics - Anfänger-Themen 5
W IE Instanz öffnen / Ausführbare Datei öffnen Java Basics - Anfänger-Themen 2
G Was passiert mit eine Methode bei einer Instanz Java Basics - Anfänger-Themen 13
D vererbung, kinder einer instanz. Java Basics - Anfänger-Themen 25
D Bei Event soll Instanz sich selbst löschen Java Basics - Anfänger-Themen 4
G Vererbung mit einer Instanz aus der Superklasse Java Basics - Anfänger-Themen 2
J Generics Probleme mit instanz von T Java Basics - Anfänger-Themen 4
H OO-Anfänger: mehrere Klassen greifen auf eine Instanz zu Java Basics - Anfänger-Themen 9
H instanz von Button wird nicht erkannt! Java Basics - Anfänger-Themen 6
P Instanz mit allen Attributen ausgeben Java Basics - Anfänger-Themen 3
B Sortieren von Objekt Arrays nach einer Instanz Java Basics - Anfänger-Themen 8
G Instanz-Rückgabewerte abspeichern Java Basics - Anfänger-Themen 2
I In Instanz ausgeben wer sie erzeugt hat Java Basics - Anfänger-Themen 2
P Instanz kann nicht erstellt werden. Java Basics - Anfänger-Themen 2
S paintComponent, neue Instanz überschreibt wohl alte Instanz Java Basics - Anfänger-Themen 6
D Instanz von Graphics in run() Java Basics - Anfänger-Themen 8
J generische klassen neue Instanz Java Basics - Anfänger-Themen 5
N Objekt seine eigene Instanz löschen lassen? Java Basics - Anfänger-Themen 7
T neue Instanz von JFileChooser => applikation friert ein Java Basics - Anfänger-Themen 2
D Unterschied zwischen Referenz auf Objekt/Instanz von Objekt Java Basics - Anfänger-Themen 9
F Prüfen, ob Instanz existiert Java Basics - Anfänger-Themen 14
M Methoden oder Instanz statisch? Java Basics - Anfänger-Themen 7
P Instanz in einer Variable speichern ? Java Basics - Anfänger-Themen 4
H eindeutige Instanz erzeugen Java Basics - Anfänger-Themen 4
I @Inject in normaler Klasse? Java Basics - Anfänger-Themen 4
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben