Objekt dynamisch neu erstellen/ austauschen

thisismyname

Mitglied
Hi,

folgendes Szenario:

Ein Objekt wird ueber einige Zeilen lang benutzt zb:

Java:
Hans hans = new Hans();

hans.setPassword("xxx");
hans.setUser("yyy");

hans.setX();
hans.setY();
hans.setZ();

hans.cleanup();

Nun moechte ich mit dem Aufruf von cleanup folgendes erledigen.
* Die Referenz auf hans soll erhalten bleiben
* Es soll aber ein neues Objekt erstellt werden in dem alles auf default ist (wie wenn ich new Hans() ausfuehre)... bis auf user+password

ein code wie
Java:
public void cleanup(){ 
Hans blub = new Hans();
blub.setPassword(this.getPassword());
blub.setUsername(this.getUsername());
this = blub;
}

wird nicht funktionieren, oder??

Das eigendliche Problem ist, das ausser Username und Passwort noch zig variablen existieren, die ich aber nicht alle benennen kann, weil diese noch anwachsen.

Ich bin auch gerne fuer andere Loesungsmoeglichkeiten offen.

greetz myname
 

Tharsonius

Bekanntes Mitglied
Du könntest einfach in das cleanup() alles reinschreiben, dass die Ursprungswerte gesetzt werden.
Immer wenn Du eine neue Variable festlegt und die entsprechende Belegung in den Konstruktor schreibst kopierst die Zeile einfach und schreibt das selbe in cleanup() ebenfalls rein.
 

ARadauer

Top Contributor
Versuch das mal...
Java:
public Hans cleanup(){ 
Hans blub = new Hans();
blub.setPassword(this.getPassword());
blub.setUsername(this.getUsername());
return blub;

}
....

...


hans = hans.cleanup();
 

Michael...

Top Contributor
Wenn ich das richtig verstanden habe soll ein zusätzliches Objekt erstellt werden, das teilweise Attribute des ursprünglichen Objektes übernimmt.

--> Verpass Deiner cleanup() einen Rückgabewert vom Typ Hans und gib blub zurück.

Allerdings ist mir nicht klar was Du dann mit this = blub bezweckst? Soll die Referenz die auf das ursprüngliche Objekt weisst auf das neue verweisen? Was passiert dann mit dem alten Objekt?
 

Tharsonius

Bekanntes Mitglied
Die Sache mit der Rückgabe eines neuen Objekts ist ja, dass die variable hans nur eine neue Referenz auf ein neues Objekt bekommt.
Hat man die Referenz auf das ursprüngliche Objekt aber an andere Klassen weiter gegeben, dann aktualisieren sich diese Referenzen dabei nicht. hans verweist auf das neue Objekt, das den selben Benutzernamen und das selbe Passwort verwendet, eventuelle Kopien der Referenzen hingegen verwenden weiterhin das alte Objekt.
 

thisismyname

Mitglied
Die Sache mit der Rückgabe eines neuen Objekts ist ja, dass die variable hans nur eine neue Referenz auf ein neues Objekt bekommt.
Hat man die Referenz auf das ursprüngliche Objekt aber an andere Klassen weiter gegeben, dann aktualisieren sich diese Referenzen dabei nicht. hans verweist auf das neue Objekt, das den selben Benutzernamen und das selbe Passwort verwendet, eventuelle Kopien der Referenzen hingegen verwenden weiterhin das alte Objekt.

Du meinst also ernsthaft, der Code oben wuerde funktionieren???

Ich denke trotzdem das die Variante mit dem Rückgabewert die bessere ist... danke fuer den schubser :)

greetz
 

System.exit(0)

Aktives Mitglied
Hallo,

letzten Endes möchtest du doch eigentlich nur einige Standardwerte überschreiben.

Dann gib doch einfach deiner Klasse hans neben dem Konstruktor eine Methode machneu(int x, int y ... ) mit.
Diese überschriebt dann einfach die alten Werte.

Java:
public class Hans
{
private int x, y;
private String Password;

public Hans(int x, int y, String Password)
{ this.x = x;
   this.y= y;
   this.Password = Password;
}

public void machneu( int x, int y)
{ this.x = x;
   this.y = y;
}

Später im Code kannst du dann mit
Java:
Hans.machneu(0,1);

einfach die lästigen alten Parameter überschreiben. Die Referenz bleibt gleich.

Gruß

System.exit(0)
 
Zuletzt bearbeitet:

Tharsonius

Bekanntes Mitglied
Du meinst also ernsthaft, der Code oben wuerde funktionieren???

Ich denke trotzdem das die Variante mit dem Rückgabewert die bessere ist... danke fuer den schubser :)

greetz

Der von ARadauer sollte durchaus funktionieren.

Ich sehe das aber als gefährlich an, da eben die Referenz nicht gleich bleibt sondern nur der einen Variablen ein neues Objekt zugewiesen wird. Solltest Du an anderer Stelle ebenfalls hans benutzen, dann habst Du dort noch immer die alte Referenz.

Ich würde Dir, wie in meinem ersten Post bereits geschrieben, noch immer dazu raten in Deine cleanup() einfach eine kopie des Konstruktors unterzubringen und dort halt all das rein schreiben, was Du zurückgesetzt haben möchtest.
 

thisismyname

Mitglied
Der von ARadauer sollte durchaus funktionieren.

Ich sehe das aber als gefährlich an, da eben die Referenz nicht gleich bleibt sondern nur der einen Variablen ein neues Objekt zugewiesen wird. Solltest Du an anderer Stelle ebenfalls hans benutzen, dann habst Du dort noch immer die alte Referenz.

Ich würde Dir, wie in meinem ersten Post bereits geschrieben, noch immer dazu raten in Deine cleanup() einfach eine kopie des Konstruktors unterzubringen und dort halt all das rein schreiben, was Du zurückgesetzt haben möchtest.

Naja, da liegt ja genau das Problem. Ich initialisiere das meiste nicht im Konstruktor, sondern beim deklarieren, also via:
Java:
public void int zahl = 0;
Ist eben nicht so 100% sauber... Aber dadurch das ich ausser User und Passwd noch ca 50 andere Variablen habe, will ich die nicht alle aufzaehlen, sondern einfach alles "neu machen" und dann die 2 Werte setzen.

greetz
 

Firestorm87

Bekanntes Mitglied
Was man will und was man kann.....
Du kannst alternativ eine Methode implementieren, die dir alle Attribute aus einem 2ten Objekt kopiert...

Also ein neues Objekt erzeugen (hat ja dann die gewünschten Werte) und dann nach dem Motto "hans.setAtriTo(bernd)".
Das könnte man sogar per reflektion und Schleife machen ohne komplett alle 50 werte aufzuzeigen (wenn denn jedes attribut ein getter und setter hat)....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
G Objekt dynamisch erstellen und Inhalte kopieren Allgemeine Java-Themen 6
B objekt einer klasse dynamisch erzeugen Allgemeine Java-Themen 6
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
Maxi-JOO Klassen Dummy Objekt in anderen Constructor übergeben Allgemeine Java-Themen 5
el_niiinho13 Objekt auf der Konsole ausgeben lassen Allgemeine Java-Themen 8
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
SaftigMelo In einem Winkel Objekt bewegen Allgemeine Java-Themen 2
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
J Objekt in Bytestream umwandeln Allgemeine Java-Themen 12
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
S Variable als Objekt Name Allgemeine Java-Themen 3
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
T Objekt in Array packen Allgemeine Java-Themen 6
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
S Neues Objekt darstellen Allgemeine Java-Themen 4
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
D Objekt-Suche mit mehreren optionalen Parametern Allgemeine Java-Themen 6
M Klassen Objekt weiter geben Allgemeine Java-Themen 1
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
S Applet Überprüfen ob ein Objekt angeklickt wurde Allgemeine Java-Themen 2
RalleYTN 3D Objekt Translation basierend auf Rotation (Probleme mit Z Rotation) Allgemeine Java-Themen 0
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
K Textdatei als Objekt Allgemeine Java-Themen 4
Viktim Classenname zu Objekt Allgemeine Java-Themen 4
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
D Datentypen Klassenattribut aus Objekt in generischer Liste Allgemeine Java-Themen 15
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
P Liste zu Objekt umwandeln Allgemeine Java-Themen 4
C Liste checken auf MINDESTENS ein Objekt | Bukkit Allgemeine Java-Themen 3
K Best Practice JFrame Objekt allgemein zugänglich machen Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
S Interaktion mit einer website (website als Objekt?) Allgemeine Java-Themen 3
J OOP Überwachen, ob ein Objekt erzeugt wird Allgemeine Java-Themen 9
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
F Neues Objekt aus .CSV definition Allgemeine Java-Themen 3
K Methoden Objekt wird nicht erkannt Allgemeine Java-Themen 11
P Objekt mit verschiedenen Datentypen Allgemeine Java-Themen 5
T Objekt kontaktiert seinen "erzeuger" Allgemeine Java-Themen 5
S Objekt orientierte Programmierung Allgemeine Java-Themen 7
C Objekt Datenverlust nach Methodenaufruf Allgemeine Java-Themen 9
H JavaFX Von einer Methode auf stage-Objekt zugreifen Allgemeine Java-Themen 3
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
P Konsoleneingabe übernehmen und Objekt instanzieren. Allgemeine Java-Themen 5
E Auf Java-Objekt aus anderer Instanz zugreifen Allgemeine Java-Themen 26
L Klassen Polymorphie:2 Attribute gleichen Namens in einem Objekt Allgemeine Java-Themen 6
P Objekt Array in Datei Speichern Allgemeine Java-Themen 3
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
V Objekt löschen Allgemeine Java-Themen 7
A OOP Wie auf Objekt der Superklasse zugreifen? Allgemeine Java-Themen 6
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
M neues Objekt speichern, nicht Referenz Allgemeine Java-Themen 10
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
F Objekt einer Datei verschieben, aber Verzeichnispfad fehlt Allgemeine Java-Themen 6
C Objekt Typ herausfinden Allgemeine Java-Themen 5
E Objekt beim Erzeugen in ArrayList Allgemeine Java-Themen 9
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
M Objekt aus Liste in Liste suchen/löschen Allgemeine Java-Themen 6
D Eigenen Objekt Pool Allgemeine Java-Themen 15
C blueJ: Objekt wird nicht in Objektleiste angezeigt Allgemeine Java-Themen 8
T Objekt 2x deserialisieren, aber nur 1x im Heap haben? Allgemeine Java-Themen 4
sambalmueslie Benachrichtigung bei neuer Objekt-Instanz Allgemeine Java-Themen 5
U Konstante in Objekt definieren Allgemeine Java-Themen 6
D this mit Objekt überschreiben Allgemeine Java-Themen 17
R Synchronized - auf welchem Objekt Allgemeine Java-Themen 16
E Objekt erstellen Allgemeine Java-Themen 7
M Timer von nicht existiertem Objekt stopen Allgemeine Java-Themen 5
M Swing-Frontend abhängig von ausgewähltem Objekt Allgemeine Java-Themen 4
J Lebt das Objekt noch?? Allgemeine Java-Themen 12
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
B Speicherverbrauch Objekt-Referenz Allgemeine Java-Themen 11
D Browser-Objekt erzeugen Allgemeine Java-Themen 8
B FileWriter / FileReader testen / Mock-Objekt für Unit Tests? Allgemeine Java-Themen 6
A Iterationen einer XML-Datei in einem Objekt sichern Allgemeine Java-Themen 5
R Objekt zur Laufzeit zerstören? Allgemeine Java-Themen 12
hdi Frage zur Objekt Initialisierung Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben