Zugriff auf Map aus einer anderen Klasse - Java?

2 Antworten

Um direkt dein Problem zu lösen, müsstest du erstmal "Ländermap" als Attribut der Klasse definieren und

  • entweder einen Getter für die Map schreiben
  • oder das Attribut public machen, indem du einfach "public" davor schreibst.

Dann rufst du die Ländermap mit "Klassenname.Ländermap" auf.

Noch ein paar Worte zum Stil:

  • Das Einzige, was in Java großgeschrieben wird, sind Klassennamen, alles andere lowerCamelCase
  • Eine Map besitzt in Java grundsätzlich zwei Typen: Den Schlüsseltypen und den Werttypen. Die Typen solltest du angeben, z.B. so:
Map<Integer, String> laenderMap = new HashMap<>();
  • Umlaute gehen zwar in Java, sollten aber vermieden werden
  • Eventuell solltest du die Klassen umstrukturieren, sodass eine Klasse als Speicher fungiert und z.B. die Map speichert, ggf. auch statisch
  • In dieser "Speicherklasse" schreibst du dann jeweilige Methoden, um ein Element in die Map einzufügen und eins wieder zu löschen und was du noch brauchst. Dahinter steckt das Prinzip der Datenkapselung: Du greifst von Außerhalb nicht direkt auf die Map zu.
Woher ich das weiß:Berufserfahrung – Software-Entwicklung (Java Enterprise)
regex9  06.11.2019, 23:24
Klassenname.Ländermap

Das würde voraussetzen, dass das Attribut objektungebunden ist, was es bestenfalls erst einmal nicht sein sollte.

0
glasair  11.11.2019, 18:14
@regex9

Ich meinte natürlich "Objektname.Ländermap".

0

HashMap ist eine generische Klasse. https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

String a = Ländermap.get(1);

scheitert wahrscheinlich daran, dass .get() auf einer typlosen HashMap den Rückgabewert Object hat.

Du kannst jetzt mal versuchen zu schreiben:

String a = (String) Ländermap.get(1);

oder

String a = Ländermap.get(1).toString();

Sauberer wäre aber, wenn du die HashMap sofort ordentlich typisierst:

HashMap<Integer, String> Ländermap = new HashMap<>();
Woher ich das weiß:Berufserfahrung – Berufserfahrung