Hi,
ich habe eine Klasse
Eine weiter Klasse verwendet die fillDataModel methode
wenn ich so das add für die ArrayList mache, steht allerdings immer der gleiche Wert in der ArrayList, ich denke das es daran liegt, das Java mit Referenzen arbeitet und ich beim neuen fill noch die Referenz auf das xte Feld im Array Element habe. Wie man vielleicht merkt komm ich aus der C Welt und die einzige Lösung die mir zu dem Problem eingefallen ist, wäre folgendes:
ich muß aber ehrlich sagen das ich das nicht sonderlich schön finde, gibt es eine andere Möglichkeit? Oder funktioniert es nur durch Zufall wenn ich das model.fillDataModel in eine andere Funktion packe? Von meinem Gefühl her würde ich jetzt einen destructor deklarieren und gut wärs gewesen, bzw. hätte das Problem vermutlich in C/C++ nicht (zumindestens glaub ich das) weil direkt mit Kopien gearbeitet wird. Najo wär nett wenn mir jemand sagen kann wieso es nicht funktioniert und wie ich das geschickt umgehen kann (= .
btw. wenn Formatfehler auftauchen, Klammerfehler oder ich vergessen habe Variablen zu übergeben/zu deklarieren, es ist wie gesagt nur ein Ausschnitt eines relativ großen Programms und eigentlich Funktioniert es gut bis auf die Probleme mit dem ListArray.
mfg
Marijke
ich habe eine Klasse
Code:
public class DataModelSab
{
private String zbnr;
//Gekürzt
public void fillDataModel(Sheet sheet, int zeile)
{
//Ich hol die Daten aus nem xls sheet mit jxl
zbnr = sheet.getCell(0, zeile).getContents();
}
}
Eine weiter Klasse verwendet die fillDataModel methode
Code:
public class Sab
{
public ArrayList a = new ArrayList();
public Sab()
{
// Das sheet ist ein xls Worksheet das ich in einer anderen Funktion öffne
validate(sheet);
}
validate(Worksheet sheet)
{
int zeile = 0;
DataModelSab model = new DataModelSab();
for(zeile = 0; zeile < 10; zeile ++)
{
model.fillDataModel(sheet, zeile);
a.add(model);
}
}
}
wenn ich so das add für die ArrayList mache, steht allerdings immer der gleiche Wert in der ArrayList, ich denke das es daran liegt, das Java mit Referenzen arbeitet und ich beim neuen fill noch die Referenz auf das xte Feld im Array Element habe. Wie man vielleicht merkt komm ich aus der C Welt und die einzige Lösung die mir zu dem Problem eingefallen ist, wäre folgendes:
Code:
public class Sab
{
public ArrayList a = new ArrayList();
public Sab()
{
validate(sheet);
}
validate(Worksheet sheet)
{
int zeile = 0;
for(zeile = 0; zeile < 10; zeile ++)
{
a.add(fill(zeile));
}
}
}
Code:
private DataModelSab fill(int zeile)
{
DataModelSab model = new DataModelSab();
model.fillDataModel(sheet, zeile);
return model;
}
ich muß aber ehrlich sagen das ich das nicht sonderlich schön finde, gibt es eine andere Möglichkeit? Oder funktioniert es nur durch Zufall wenn ich das model.fillDataModel in eine andere Funktion packe? Von meinem Gefühl her würde ich jetzt einen destructor deklarieren und gut wärs gewesen, bzw. hätte das Problem vermutlich in C/C++ nicht (zumindestens glaub ich das) weil direkt mit Kopien gearbeitet wird. Najo wär nett wenn mir jemand sagen kann wieso es nicht funktioniert und wie ich das geschickt umgehen kann (= .
btw. wenn Formatfehler auftauchen, Klammerfehler oder ich vergessen habe Variablen zu übergeben/zu deklarieren, es ist wie gesagt nur ein Ausschnitt eines relativ großen Programms und eigentlich Funktioniert es gut bis auf die Probleme mit dem ListArray.
mfg
Marijke