Zugriff auf Map aus einer anderen Klasse - Java?
Situation ist folgende:
2 Klassen in einer
Land Land1 = new Land("Alberta", "Alaska", "Ontario", "Grönland", " ", " ", 1, 1, 1);// Die klasse wo ich das erstelle hat hier mit nichts zu tun
HashMap Ländermap = new HashMap();
Ländermap.put(new Integer(Land1.getid(1, 1)), "Land1");
in der anderen:
String a = Ländermap.get(1);
nur er erkennt die map nicht als map wie muss ich das ändern damit die Map public ist
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)
Nutzer, der sehr aktiv auf gutefrage ist
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
Das würde voraussetzen, dass das Attribut objektungebunden ist, was es bestenfalls erst einmal nicht sein sollte.