Hallo,
jetzt muss ich mal doof Fragen. Ich schaue mir gerade den Code an, den ich in ungefähr auch für meine Klasse brauchen kann.
Dann kommt diese Zeile:
Die Funktion:
Mir gehts nicht darum was sie macht, das ist mir schon klar. Mich interessiert nur, warum mein ehemalige Kollege das so gemacht war. Das Prinzip ist ganz einfach. Der eventReader hat halt immer den Inhalt von einer XML, also jeden Tag drinnen.
Wenn es einen Wert in meiner DB schon gibt, dann soll der Eventreader wieder von vorne anfangen.
Hätte da nicht ein einfacher continue wie oben gereicht? Stattdessen übergibt er den Reader und lässt ihn in einer funktion durchlaufen bis er am Ende, also am letzten Tag der XML angekommen ist.
Ich dachte das kann so gar nicht gehen. Wenn ich einen Wert einer Funktion übergeben, is das doch lokal. Also durchgeht er ja nicht den Eventreader von oben, bzw der oben nicht in der Funktion bleibt ja ungerührt. Oder führt Java darauf eine Referenz, weil ich gib ja den Wert nicht mal zurück.
Also man kann sich das doch sparen das durchzählen, wenn das eh nur lokal in der Funktion passiert, oder denke ich falsch? Mir gehts ned um die Logik, sondern vielmehr darum, ob Java wenn man eine Variable einer Funktion übergibit wie hier, diese auch referenziert wird, sodass sie außerhalb der Funktion auch den geänderten Wert hat...
jetzt muss ich mal doof Fragen. Ich schaue mir gerade den Code an, den ich in ungefähr auch für meine Klasse brauchen kann.
Dann kommt diese Zeile:
Code:
if (checkForExistingPlace(externalId)) {
// if place already exists in db (identified by external provider and external id) move eventreader to end of this location
advanceToLocationEnd(eventReader);
continue;
}
Die Funktion:
Code:
/**
* @param eventReader
* @throws XMLStreamException
*/
private void advanceToLocationEnd(XMLEventReader eventReader) throws XMLStreamException {
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isEndElement()) {
// end of place
if (event.asEndElement().getName().toString().equals(LOCATION_TAG)) {
return;
}
}
}
}
Mir gehts nicht darum was sie macht, das ist mir schon klar. Mich interessiert nur, warum mein ehemalige Kollege das so gemacht war. Das Prinzip ist ganz einfach. Der eventReader hat halt immer den Inhalt von einer XML, also jeden Tag drinnen.
Wenn es einen Wert in meiner DB schon gibt, dann soll der Eventreader wieder von vorne anfangen.
Hätte da nicht ein einfacher continue wie oben gereicht? Stattdessen übergibt er den Reader und lässt ihn in einer funktion durchlaufen bis er am Ende, also am letzten Tag der XML angekommen ist.
Ich dachte das kann so gar nicht gehen. Wenn ich einen Wert einer Funktion übergeben, is das doch lokal. Also durchgeht er ja nicht den Eventreader von oben, bzw der oben nicht in der Funktion bleibt ja ungerührt. Oder führt Java darauf eine Referenz, weil ich gib ja den Wert nicht mal zurück.
Also man kann sich das doch sparen das durchzählen, wenn das eh nur lokal in der Funktion passiert, oder denke ich falsch? Mir gehts ned um die Logik, sondern vielmehr darum, ob Java wenn man eine Variable einer Funktion übergibit wie hier, diese auch referenziert wird, sodass sie außerhalb der Funktion auch den geänderten Wert hat...