Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Objekt object 1 = new Objekt()
Objekt object 2 = new Objekt()
Ich erzeuge in meinem Programm zwei Objekte und möchte je nach Aufruf einer add-Methode Informationen in eine TreeMap speichern. Wobei object1.add(Infos) in TreeMap 1 schreibt und object2.add(Infos) in die TreeMap 2.
Wie kann ich aber jetzt herausfinden, auf welches Objekt die Methode aufgerufen wird?
Java:
public boolean add(String tätigkeit, Period zeitraum)
{
//Wird add auf object1 aufgerufen möchte ich die Parameter in TreeMap1 schreiben
//Wird add auf object2 aufgerufen möchte ich die Parameter in TreeMap1 schreiben
}
Einen Beitrag im Forum gibt es bereits, leider konnte ich aus diesem keinerlei Nutzen ziehen, da dort einfach die Struktur der Methode bzw. der Parameter verändert wurde. In meinem Fall sollen die Übergabeparameter aber unverändert bleiben.
Ist diese TreeMap ein nicht statisches Attribut dieser Klasse oder ein statisches Objekt?
Ist deine TreeMap ein nicht statisches Attribut deiner Klasse, dann hat jedes Objekt deiner Klasse seine eigenes TreeMap Objekt. Daher wäre es unnötig zu wissen welches Objekt angesprochen wurde.
Wie schaut denn deine Klasse "Objekt" aus?
Die Klasse selbst beeinhaltet zwei kleine Funktion, die jeweils nur einen String zurückgeben, und, wie oben erwähnt, die add-Methode, die einen String und ein Objekt übergeben bekommt und diese dann in die TreeMap einträgt.
Wenn du das dein Objekt nicht durch ein Attribut (id, name oder ähnliches) selbst eindeutig identifizieren kannst, dann musst du es durch einen weiteren Parameter regeln welcher dir dann in der Methode sagen kann.
Was willst du denn genau realisieren? Warum ist die TreeMap statisch? Wenn du von einem Objekt jeweils nur in eine spezifische TreeMap schreiben willst dann kannst du doch gleich dafür sorgen das jede Objekt seine eigene TreeMap hat.
Java:
public class MyClass { // Objekt ist ein blöder Name für eine Klasse, da es sehr leicht zu Verwechslung mit der Java Klasse "Object" kommen kann.
private TreeMap<String> infos;
public void add(String infos) {
infos.add(infos);
}
}
Nun habe ich die Maps als nicht-statisch implemeniert, so wie du oben beschrieben hattest. Funktionieren tut es jetzt, leider mir nicht ganz so verständlich. Warum wirkt sich die Änderung auf nicht-statisch so aus?
public class MyClass { // Objekt ist ein blöder Name für eine Klasse, da es sehr leicht zu Verwechslung mit der Java Klasse "Object" kommen kann.
private TreeMap<String> infos;
private String name;
private int counter;
public void add(String infos) {
infos.add(infos);
}
}
Eine Klasse ist ein Bauplan für Objekte. Du kannst beliebig viele Objekte einer Klasse erstellen (begrenzt eigentlich nur durch den Arbeitsspeicher deines PCs).
Alle nicht statischen Attribute einer Klasse sind für jedes Objekt spezifisch, damit ist es dir möglich jedem Objekt einen anderen Wert auf das Attribut "name" (oder "counter) zu setzen.
Die statischen Attribute gelten für alle(!) Objekte einer Klasse.