Wertübergabe

Status
Nicht offen für weitere Antworten.

Stieglitz

Mitglied
Hallo, ich bin eine ziemlicher Java Anfänger und habe folgendes Problem:

ich möchte eine Reihe von Werten die in einer Schleife generiert werden an eine andere Klasse übergeben. Genau sind das 3 Strings und ein int. Die Werte werden in einer Schleife gewonnen, die unterschiedlich häufig durchlaufen wird. Als Lösung hatte ich mir eine ArrayList vom Typ Object überlegt, an die bei jedem Durchlauf ein Array mit den 4 Werten angehängt wird. in etwa so
Code:
 private Object[] hilfsarray;
hilfsarray = new Object[4];     // Array für die 4 Werte 
 private java.util.List Datensatz = new ArrayList();  // Liste 
.
.
.
 while(DatensatzID == dbsend.getDatensatzID()){
 hilfsarray[0] = dbsend.getPfad();
 hilfsarray[1] = dbsend.getSeite();  // int
 hilfsarray[2] = dbsend.getTemplate();
 hilfsarray[3] = dbsend.getTyp();
Datensatz.add(hilfsarray);
 xmlerz.setXml(Datensatz);
}

in der Klasse xmlerz habe ich auch wieder ein hilfsarray dem ich den Datensatz zuweisen möchte.
Code:
hilfsarray = new Object[4]; 
for(int i = 0; i<=Datensatz.size();++i){
      hilfsarray = Datensatz.get(i);
      Template = hilfsarray[2].toString()
.
.
.

Jetzt treten 2 Probleme auf:
1. bei hilfsarray = Datensatz.get(i); wird gemeckert das hilfarray vom Typ Object ist und nicht Object[]
wenn ich hilfarray in hilfsarray[] änder, kommt die Fehlermeldung "not a Statement"

2. das .toString() casten funktioniert nicht - wahrscheinlich wegen dem 1. Fehler, bin mir aber nicht sicher ob man das überhaubt so machen kann oder sollte.


Ist das überhaupt eine geeignete Methode um die Werte zu übergeben oder gibt es da was eleganteres ?
Wäre schön wenn mir da jeman helfen könnte
 

Mag1c

Top Contributor
Hi,

benutze für die Datensätze kein Array sondern mache eine eigene Klasse dafür:

Code:
public class Datensatz {
    public String pfad;
    public int seite;
    public String template;
    public String typ;
}

der Einfachheit erstmal mit public-Variablen und ohne get-/set-Methoden.

die kannst du dann so einbauen:

Code:
while...
    Datensatz data = new Datensatz();
    data.pfad =
    data.seite =
    data.template =
    data.typ =
    datensaetze.add(data)

...

xmlerz:

    Datensatz data = (Datensatz) datensaetze.get(i);

In einer ArrayList lassen sich beliebige Object's speichern. Deshalb muß hier beim
get ein Typecast dem Compiler mitteilen, daß man hier einen bestimmten Typ erwartet.
(Das funktioniert natürlich nur, wenn man auch nur diesen Typ in der ArrayList
drin hat. Kommt was anderes, gibts ne ClassCastException)

Und bitte: benutze für Variablennamen immer einen Kleinbuchstaben am Anfang ;)

Gruß
Mag1c
 

Stieglitz

Mitglied
Verstehe ich das richtig das datensätze eine einfache Lsite ist, an die ich immer neue Instanzen der classe datensatz anhänge?

Ich werde mich bemühen in Zukunft die Konventionen zu Groß/Kleinschreibung bei Variablen und Klassen einzuhalten :wink:
 

Mag1c

Top Contributor
Hi,

ja, ich wollte deinen eigenen Code nicht völlig über den Haufen kippen. Da nun
aber die neue Klasse schon Datensatz heißt, hab ich die Liste in datensaetze umbenannt.
Bleibt aber eine ArrayList.

Gruß
Mag1c
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben