Call-By-Reference umgehen

  • Themenstarter Florian Scheidler
  • Beginndatum
Status
Nicht offen für weitere Antworten.
F

Florian Scheidler

Gast
Hallo zusammen,

in meiner Java-Anwendung werden Sendungen erfasst (Spedition), die von einem Versender an einen Empfänger gehen. Alle Sendungsdaten die in der Erfassungsmaske vom User eingetragen worden sind, müssen bevor sie in der Datenbank gespeichert werden, in der Anwendung zwischengespeichert werden. Das passiert in einer Hashtable.

- Sendungsstammdaten wie Datum, Erfasser, Versender, Empfänger: Hashtable "vecSendung"

Diese Hashtable wird als Parameter an den Konstruktor der Klasse "Ausfuehrung" übergeben und dort an zwei Klassenvariablen übergeben. Diese beiden Klassenvariablen sollen unabhängig voneinander die Sendungsdaten unterschiedlich formatieren.

Code:
public class Ausfuehrung extends JDialog
{
  private Hashtable vecSendung, vecSendungDB;
  private Hashtable vecExtras, vecExtrasDB;
  private Vector vecPositionen, vecPositionenDB;
  private Vector vecADR, vecADR_DB;
  private Hashtable vecAktivierung, vecAktivierungDB;
  private Frame root;	
	
  public StatusAnzeige(Frame parent, Connection conn, Hashtable sdg)
  {
      super(parent, "Status der Sendungserfassung", true);
		
      root = parent;

      //CALL BY REFERENCE-PROBLEM:
      // vecSendung UND vecSendung2 verweisen beide auf sdg, statt jeweils ein eigenständiges Objekt darzustellen.
      // D.h. wenn sich vecSendung ändert, ist auch vecSendung2 verändert.
      // Diesen Umstand gilt es zu verhindern !
		
       vecSendung = sdg;
       vecSendung2 = sdg;
       
       //Formatierungen der Daten in vecSendung

       //Formatierungen der Daten in vecSendung2

Da Java hier scheinbar standardmäßig mit Call-By-Reference arbeitet, werden Formatierungen der Daten in vecSendung auch in vecSendung2 vorgenommen. vecSendung2 soll aber den Originalzustand beibehalten.

Wie kann ich das Problem umgehen? Wie mache ich aus vecSendung und vecSendung2 zwei völlig eigenständige Objekte, die die Daten vom Parameter sdg erhalten?

Gruß Florian Scheidler
 
G

Guest

Gast
Uuups, der Konstruktor heißt natürlich nicht StatusAnzeige sondern Ausfuehrung!!
 
B

bygones

Gast
Java kennt keine Call-by-reference (siehe FAQ).

erstelle einfach eine neue Hashtable mit den Daten der alten (siehe Hashtable API)
 

Bleiglanz

Gesperrter Benutzer
hängt davon ab, was in der Hashtable eigentlich drin ist

=> nur Strings und andere Immutables: einfach kopieren in neue Hashtable (bzw. es reicht ein vecSendung2 = sdg.clone())

wenn da selbst wieder Objekte drin sind, dann musst du auch von all diesen Objekten Kopien machen
 
G

Guest

Gast
In meiner Hashtable sind nur Strings, aber hinzu kommen noch 2 Vectoren.
Der erste enthält Objekte der Klasse Sendungsposition (extends Vector).
Der zweite enthält Vectoren, die wiederum Objekte der Klasse Gefahrgut (extends Vector) beinhalten.

Gibt es keine andere Möglichkeit als von jedem der Objekte eine Kopie zu erstellen?

Was passiert denn z.B. wenn ich die Vectoren per Parameter an eine Methode übergebe und dort jeweils formatiere? Wird dann mit einer Kopie gearbeitet oder nicht?

Gruß Florian Scheidler
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Wie kann ich call by reference umgehen? Java Basics - Anfänger-Themen 14
J Java call by Value oder Reference Java Basics - Anfänger-Themen 35
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
H call by reference & value Java Basics - Anfänger-Themen 14
B Call by Value/Reference Java Basics - Anfänger-Themen 4
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
T Array prozedur, call by reference ? Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
S call by reference? Java Basics - Anfänger-Themen 52
F Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference Java Basics - Anfänger-Themen 2
B Call By reference (Null pointer exception) Java Basics - Anfänger-Themen 6
C Call by reference Java Basics - Anfänger-Themen 11
W call-by-reference-Effekt bei Objekten Java Basics - Anfänger-Themen 3
S "Call by Reference" Java Basics - Anfänger-Themen 12
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S call by reference Java Basics - Anfänger-Themen 7
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
B Call by Reference Java Basics - Anfänger-Themen 7
S call by reference vs. call by value - pls help Java Basics - Anfänger-Themen 7
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
R Call By Referene? Java Basics - Anfänger-Themen 10
N Methode erfüllt nicht den zweck (Call by value) Java Basics - Anfänger-Themen 17
0 Call by value Java Basics - Anfänger-Themen 3
J Call by ... Java Basics - Anfänger-Themen 16
F java call jython Java Basics - Anfänger-Themen 7
C Unchecked Call? Wie Warnung beseitigen? Java Basics - Anfänger-Themen 3
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
T Boolean by Reference Java Basics - Anfänger-Themen 6
T Schleifenindex "by reference" / "by value" Java Basics - Anfänger-Themen 13
O Socket by reference übergeben Java Basics - Anfänger-Themen 0
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
O Illegal Group Reference Java Basics - Anfänger-Themen 4
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
K Variablen Cannot make a static reference to the non-static field time Java Basics - Anfänger-Themen 6
P Compiler-Fehler Cannot make a static reference to the non-static field process Java Basics - Anfänger-Themen 3
C Reference - wird gegen meinen Willen - auf null gesetzt Java Basics - Anfänger-Themen 2
F Mal wieder: Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 9
F Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 3
M Reference Java Basics - Anfänger-Themen 2
B Cannot make a static reference...?? Java Basics - Anfänger-Themen 5
B Mal wieder "cannot make a static reference..." Java Basics - Anfänger-Themen 2
N Reference to non-static method Java Basics - Anfänger-Themen 8
C Passing Reference by Value Java Basics - Anfänger-Themen 4
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
R Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 5
L [Gelöst] Cannot make a static reference ... Java Basics - Anfänger-Themen 12
N Connot make a static reference. deklarierungsfehler Java Basics - Anfänger-Themen 10
T object reference counts Java Basics - Anfänger-Themen 14
T Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 8
frau-u Altes Problem: non-static method cannot be reference Java Basics - Anfänger-Themen 7
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
Elaurin Erste Schritte effektiv lernen mit Java umgehen zu können? Java Basics - Anfänger-Themen 5
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
D Mit mit geschweifter Klammer umgehen Java Basics - Anfänger-Themen 5
T Methoden Java Methode "umgehen" Java Basics - Anfänger-Themen 2
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
U Vererbung Mehrfachvererbung - Wie umgehen? Java Basics - Anfänger-Themen 3
L Methoden Methoden umgehen Java Basics - Anfänger-Themen 5
D Compiler-Fehler Wie kann ich das Problem umgehen? Java Basics - Anfänger-Themen 2
P Gleichverteilung umgehen, Werte nacheinader zuweisen? Java Basics - Anfänger-Themen 1
B DTD. umgehen/ignorieren Java Basics - Anfänger-Themen 3
O Main-Methode static modifier umgehen Java Basics - Anfänger-Themen 10
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29
F wie mit einer ioexception umgehen Java Basics - Anfänger-Themen 10
-horn- Wie am Einfachsten mit Config-Datei umgehen. Welches Format? Java Basics - Anfänger-Themen 6
P Online Etests umgehen Java Basics - Anfänger-Themen 29
G Überschreiben einer Variable umgehen Java Basics - Anfänger-Themen 6
M oktale Interpretation der führenden Null umgehen Java Basics - Anfänger-Themen 5
S Mit Collection<int[]> umgehen Java Basics - Anfänger-Themen 2
F Wie muss ich mit Preferences umgehen. Java Basics - Anfänger-Themen 5
T Umgehen eines remote mySQL-Zugriffes? Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben