Collection von Objekten verschiedener Klassen

Status
Nicht offen für weitere Antworten.

Thomas Lorenz

Bekanntes Mitglied
Ich möchte in meinen Programm erreichen, dass ich zum Start des Programms mehrere einzelne Objekte verschiedener Klassen
(z.B. Systemeinstellungen, Filedaten, Benutzereinstellungen) erzeuge.
Im weiteren Verlauf ist es so, dass auf diese genannten Objekte aus jeder beliebigen anderen Klasse zugegriffen werden kann.

Somit könnte ich dann aus einer Klasse XYZ auf das Objekt System der Klasse Systemeinstellungen zugreifen und dessen
Methoden nutzen.

Mein Ansatz ist, dass ich die oben genannten Objekte in einer Collection sammeln tue und später die Collection nach einem Objekt
suchen lasse, denn der Name dieser Objekte ist ja seit dem Programmstart bekannt.


Konkretes Beispiel:

Beim Start wird ein Objekt Sys der Klasse Systemeinstellung erzeugt. Hierbei bekommt das Objekt Eigenschaften wie das verwendete
Betriebssystem und dem daraus resultierenden Pfad.
Nun soll die Klasse GUI ein Textfeld zur Verfügung stellen, welches die Eingabe in Form der System üblichen Form zur Verfügung stellt.
Also meinetwegen den Slash anstatt des Backslash.

Also nur der KeyListener des Textfeldes, oder das PlainDocument des Textfeldes soll in der Klasse Systemeinstellung nachfragen (z.B.
sys.getSysSeparator() ).
Nicht das die Klasse GUI im Konstruktor schon das Sys-Objekt erhält und mit sich rumschleppt.

Wie könnte hier eine Lösung dafür aussehen?
 

Marco13

Top Contributor
Grundsätzlich könnte man das mit einer Map machen
Code:
class Settings
{
    public static final Map<String, Object> map = new HashMap<String, Object>();
}


// Von überall:
Settings.map.put("Sys", new SystemSettings());

// Auch von überall:
SystemSettings sys = (SystemSettings)Settings.map.get("Sys");
aber das static und das casten sind ziemlicher Bogus.

Für einiges von dem, was du da abspeichern wills, GIBT es wohl schon Lösungen - z.B. die Slash/Backslash-Sache:
String separator = File.separator;

Andere Sachen kann man sich aus der Klasse "System" holen.

Beschreib' ggf. mal genauer, worum es da geht. Vielleicht wäre das ein Fall, wo ein "Singelton" angebracht wäre - aber das nur einzusetzen, weil man "da so schön bequem drauf zugreifen kann" ist nicht gut.
 

Thomas Lorenz

Bekanntes Mitglied
Zunächst einmal vielen Dank für die superschnelle Antwort.

Ja, dass mit dem FileSeparator war kein gutes Beispiel. Ich weiß, dass die Klasse System diese Methode anbietet.

Beim Start werden mehrere Textdateien auf ihren Status abgefragt (vorhanden ?, Größe). Hierzu gibt es u.a. auch Textdateien
in der Anwender von mehreren Klassen zugreifen kann um von dort Daten abzuholen, oder Daten hineinschreiben kann.

Weiterhin wird eine Personalnummer beim Start vergeben, auf die ebenfalls immer wieder zugegriffen wird.
Dazu ein Beispiel : Wenn die Personalnummer eine bestimmte Kennung besitzt, dann darf der Anwenders dies und dass und
andere Sachen wieder nicht. Und solche Abfragen sollten aus mehreren Klassen möglich sein.

Ein letztes Beispiel :

Eine Klasse ErrorHelper hält alle möglichen Fehlermeldungen, von denen aus zahlreichen Methoden zugegriffen werden muss.

Ich weiß, dass es sehr hilfreich wäre, wenn ich den Code hier veröffentliche. Es handelt sich jedoch um eine Behördenanwendung,
in der schon das ein, oder andere Detail steht welches ich nicht öffentlich machen möchte.
Und ein anonymisieren wäre ein riesiger Aufwand, da bereits über zehn Klassen vorhanden sind.

Zwei Fragen zu Deinem Beispiel habe ich noch:


// Von überall:
Settings.map.put("Sys", new SystemSettings());

Also in der aufrufenden Klasse muss in jedem Fall ein Objekt von Settings existieren?
Und mit ... new SystemSettings erschaffe ich KEIN neues Objekt von SystemSettings?

Bin da noch unsicher.
 

Marco13

Top Contributor
Wenn man davon ausgehen kann, dass es sich bei diesen "Einstellungen" um ein Objekt (oder eine Sammlung von Objekten) geht, von dem es in der gesamten Anwendung zu jedem Zeitpunkt nur EINE Instanz geben DARF, dann kann man dafür ein Singleton verwenden. (Und NUR dann).

D.h. du könntest solche Einstellungen dann mit einer Klasse verwalten wie
Code:
class Settings
{
    // Irgendwelche Einstellungen
    private String someSetting;

    // Eine Instanz
    private static Settings instance = new Settings();
    
    private Settings() {}

    // Statische Methode, um die Instanz zu holen
    public static Settings getInstance()
    {
        return settings;
    }
}

Diese Klasse kann dann von jedem Punkt aus verwendet werden, OHNE dass man dort eine Instanz von "Settings" kennen muss - stattdessen verwendet man die statische getInstance-Methode:

String someSetting = Settings.getInstance().getSomeSetting();

Das kann natürlich noch ausgefeilter werden, mit einer Collection oder Map oder sonstwas. Der wichtige Punkt bei diesem (Websuch-Stichwort) Design Pattern "Singleton" ist die private statische Instanz, der private Konstruktor und die public static getInstance()-Methode.

Aber nochmal der Hinweis: Dieses Pattern wird oft falsch eingesetzt. Meistens dann, wenn jemand zu faul ist, sich über eine vernünftige Klassenstruktur Gedanken zu machen, und einfach nur mit wenig Aufwand eine "Daten-Hure" erstellen will, wo jeder, der gerade Lust hat, mal drüberrutschen darf.

WENN es für deine Einstellungen aber immer nur EINE Instanz geben DARF, dann ist das eine Lösung. Andernfalls wirst du um weiteres Nachdenken kaum drumrumkommen.
 

Thomas Lorenz

Bekanntes Mitglied
Beim Versuch über eine Daten-Hure rüberzurutschen kam ich nicht weiter. Wahrscheinlich hätte ich erst eine Lochinstanz anlegen müssen, oder auch mehrere.
Aber der Begriff hat mich doch sehr lustig berührt. Prima!!

Gut, ich werde mich damit eingehender beschäftigen und danke Dir für die Antwort.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Garbage Collection Java Basics - Anfänger-Themen 9
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
M Collection.sort sortiert nicht Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
E Interface List nicht als Collection an erkannt. Java Basics - Anfänger-Themen 14
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Collections Werte aus .txt in einer Collection speichern Java Basics - Anfänger-Themen 11
M Collection Aufgabe Java Basics - Anfänger-Themen 22
Arif Collections Unkonstruiertes Objekt einer Collection hinzufügen Java Basics - Anfänger-Themen 2
W Collection-Problem Java Basics - Anfänger-Themen 35
P Klassen In einer Autoklasse das Objekt Auto mittels Collection Speichern Java Basics - Anfänger-Themen 4
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
J Objekt in Collection speichern Java Basics - Anfänger-Themen 4
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
J Collection Objekt Java Basics - Anfänger-Themen 3
T Collections Zusammengehörende Strings in einer Collection Java Basics - Anfänger-Themen 2
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
B Collections Collection soll nur einen bestimmten Datentyp aufnehmen Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
K Collections Collection für 12 mio Strings Java Basics - Anfänger-Themen 7
Y Collection der eigenen Klasse Java Basics - Anfänger-Themen 10
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
R Passende Collection gesucht Java Basics - Anfänger-Themen 11
G Collections Wahl der richtigen Collection Java Basics - Anfänger-Themen 11
O Frage zu Verständnis von Collection Java Basics - Anfänger-Themen 4
D Scala Iterable zu Java Collection konvertieren Java Basics - Anfänger-Themen 3
D Frage zu Collection und deren Anwendung Java Basics - Anfänger-Themen 2
S Welche Collection kann sich selber sortieren? Java Basics - Anfänger-Themen 8
J Collection soll übergeben werden... Java Basics - Anfänger-Themen 7
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
B Iterator und Collection Java Basics - Anfänger-Themen 11
G Java Collection Frameworks Java Basics - Anfänger-Themen 5
D Collection Konvertieren Java Basics - Anfänger-Themen 7
K Datentypen Über Collection iterieren bringt fehler Java Basics - Anfänger-Themen 8
K OOP Aus Collection Objekte bestimmter Subklassen entfernen Java Basics - Anfänger-Themen 7
S Welche Collection? Java Basics - Anfänger-Themen 5
S Collection rückwärts durchsuchen Java Basics - Anfänger-Themen 4
W Wie kann ich auf Object meiner Collection zugreifen Java Basics - Anfänger-Themen 7
J Collection Vector Java Basics - Anfänger-Themen 8
B Collection während Iteration verändern Java Basics - Anfänger-Themen 7
T Collection in collection Java Basics - Anfänger-Themen 6
J Collection ArrayList und mit erweitertem for iterieren Java Basics - Anfänger-Themen 7
J Probleme mit Collection ArrayList Java Basics - Anfänger-Themen 2
C Collection vs. LinkedList, Abstrakt vs. Konkret Java Basics - Anfänger-Themen 9
G Collection<BufImg> in Datei speichern Java Basics - Anfänger-Themen 8
A Collection auslesen ohne Objekttyp zu kennen? Java Basics - Anfänger-Themen 11
G Collection<Strings> - Liste von Strings verwalten Java Basics - Anfänger-Themen 9
A Struts: Über Collection iterieren mir Taglibs? Java Basics - Anfänger-Themen 13
S Collection<Typ> sort Java Basics - Anfänger-Themen 4
0x7F800000 elemente aus einer Collection korrekt löschen Java Basics - Anfänger-Themen 8
T Frage zu Vererbung beim Collection-Framework Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
M Object [][] ist nicht vom Typ Collection? Java Basics - Anfänger-Themen 3
S Collection wie LinkedHashMap Java Basics - Anfänger-Themen 7
J LinkedList, Collection, ArrayList, List. was denn bitte? Java Basics - Anfänger-Themen 6
S Collection Sort Java Basics - Anfänger-Themen 15
A Welche Collection? Java Basics - Anfänger-Themen 13
C Collection in Verbindung mit String.split speicherlastig Java Basics - Anfänger-Themen 20
S Collection in einer Collection Java Basics - Anfänger-Themen 5
A Welche Collection soll ich nehmen? Java Basics - Anfänger-Themen 4
E welche Datenstruktur (Collection) Java Basics - Anfänger-Themen 4
K Collection und Iterator Java Basics - Anfänger-Themen 7
I Bestimmte Variablen in Collection Classes Java Basics - Anfänger-Themen 2
M Source Code von Collection Framework, etc. Java Basics - Anfänger-Themen 3
vogella Cast from Collection.toArray to String[] Java Basics - Anfänger-Themen 2
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
S Mit Collection<int[]> umgehen Java Basics - Anfänger-Themen 2
S welche collection ? String und object Java Basics - Anfänger-Themen 5
M gibt es eine collection mit definierter maximaler größe Java Basics - Anfänger-Themen 4
G Collection Framework Java Basics - Anfänger-Themen 8
V Mehrdimensionale Collection? Java Basics - Anfänger-Themen 4
U JSTL: Collection auslesen mit forEach Java Basics - Anfänger-Themen 1
A Interface Collection implementieren? Java Basics - Anfänger-Themen 4
I Collection sortieren, ":" höchste "Priorität& Java Basics - Anfänger-Themen 4
P Äquivalent zu Visual Basic Collection Java Basics - Anfänger-Themen 6
G Collection, aber welche? Java Basics - Anfänger-Themen 6
A Collection<String> Java Basics - Anfänger-Themen 4
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
E Strings in Collection Java Basics - Anfänger-Themen 6
R welche Collection nehmen? Java Basics - Anfänger-Themen 4
P Collection Vector speichern mittels Serialisierung? Java Basics - Anfänger-Themen 2
megachucky Collection Vector: ausgabe klappt nicht richtig Java Basics - Anfänger-Themen 9
T Welche Collection nehmen? HashMap? Java Basics - Anfänger-Themen 4
L-ectron-X Speicher freigeben - Garbage Collection Java Basics - Anfänger-Themen 6
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
T Kollision von 2 Objekten Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
YAZZ Schlüsselworte Töten von Objekten Gameover Java Basics - Anfänger-Themen 2
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben