Guten Tag!
Ich habe ein kleines Verständnisproblem. In der Klasse "SentenceInterpreter" lege ich in der einzigen öffentlichen Methode "interpretSentence" ein Objekt an, welches 2 LinkedLists enthält.
In dieser Klasse gibt es u.a eine private Methode, die dieses Objekt entgegennimmt und es im Zuge der Verarbeitung verändert.
Später wird in der öffentlichen Methode "interpretSentence", eben diese Methode (checkForCommandStarter aufgerufen).
Wie man sieht, möchte ich nur überprüfen ob true oder false zurückkommt, jedoch wird auch das zuvor in der Methode geschaffene Objekt verändert. Also die Listen des Objekts wurden auch in der Hauptmethode getrimmt, obwohl ich ja nirgends einen Rückgabewert dem ursprünglichen Objekt zugewiesen habe. (Zuerst gab die Methode "checkForCommandStarter" das ListenObjekt zurück. Das wollte ich dann mit dem ursprünglichen Objekt abgleichen, jedoch wird auch ohne explizite Zuweisung das Originalobjekt verändert)
Ich verstehe nicht ganz warum das passiert.
Bitte um Hilfe.
LG
Ich habe ein kleines Verständnisproblem. In der Klasse "SentenceInterpreter" lege ich in der einzigen öffentlichen Methode "interpretSentence" ein Objekt an, welches 2 LinkedLists enthält.
Java:
public LinkedList<InputInterpretation> interpretSentence(String[][] analysedWords){
//Convert Array for better handling
DoubleLinkedList analysedLinked = mergeArray(analysedWords);
...
In dieser Klasse gibt es u.a eine private Methode, die dieses Objekt entgegennimmt und es im Zuge der Verarbeitung verändert.
Java:
private boolean checkForCommandStarter(DoubleLinkedList analysedLinked){
String checkString = "";
int count = 0;
if(!analysedLinked.getAnalysed().isEmpty()){
for(String word : analysedLinked.getAnalysed()){
checkString += word;
if(checkString.toLowerCase().matches(commandStarter)){
count++;
}
else{
break;
}
}
}
for(int i = 0; i < count; i++){
analysedLinked.getAnalysed().remove(0);
analysedLinked.getAnalysedType().remove(0);
}
if(count > 0){
return true;
}
else{
return false;
}
}
Später wird in der öffentlichen Methode "interpretSentence", eben diese Methode (checkForCommandStarter aufgerufen).
Java:
...
if(checkForCommandStarter(analysedLinked)){
...
Wie man sieht, möchte ich nur überprüfen ob true oder false zurückkommt, jedoch wird auch das zuvor in der Methode geschaffene Objekt verändert. Also die Listen des Objekts wurden auch in der Hauptmethode getrimmt, obwohl ich ja nirgends einen Rückgabewert dem ursprünglichen Objekt zugewiesen habe. (Zuerst gab die Methode "checkForCommandStarter" das ListenObjekt zurück. Das wollte ich dann mit dem ursprünglichen Objekt abgleichen, jedoch wird auch ohne explizite Zuweisung das Originalobjekt verändert)
Ich verstehe nicht ganz warum das passiert.
Bitte um Hilfe.
LG