Hallo :meld:
Ich habe folgende Situation. Eine ArrayList kann verschiedene Arten von (, sagen wir mal, )Tieren aufnehmen. Nun sollen alle Methoden, die ein spezielles Tier (zb. Fisch mit schwimmen(); oder Vogel mit fliegen()
bereitstellt, getestet werden.
Ich denke normalerweiße würde man mit einer for Schleife durchiterieren, wobei jedesmal auf Fisch oder Vogel geprüft wird.
Angenommen ich habe jetzt aber nicht nur diese zwei Arten von Tieren, sondern 10/20/oder gar 50 -
ich habe gehört es sei sinnvoller auf switch case zu setzen, wenn es viele Fallunterscheidungen gibt.
Aber wieviele sind "viele"? Und gilt das auch für ArrayLists mit instanceof-Operator in jeder case-Klausel?
Gibt es eine bessere Lösung als isntanceof? (Ich habe gelesen, dass die Benutzung davon nicht gut für die Performance sei) Wie wäre es mit if -Anweisungen in der Art
::gerade bemerkt, dass getClass in diesem Fall nur class arrayListClasses zurückgibt :noe:
Ich habe folgende Situation. Eine ArrayList kann verschiedene Arten von (, sagen wir mal, )Tieren aufnehmen. Nun sollen alle Methoden, die ein spezielles Tier (zb. Fisch mit schwimmen(); oder Vogel mit fliegen()
Ich denke normalerweiße würde man mit einer for Schleife durchiterieren, wobei jedesmal auf Fisch oder Vogel geprüft wird.
Java:
...
for (int x = 0; x < tierListe.size(); x++){
if (tierListe.get(x) instanceof Vogel){
tierListe.get(x).fliegen();
}
if (tierListe.get(x) instanceof Fisch){
tierListe.get(x).schwimmen();
}
}
...
Angenommen ich habe jetzt aber nicht nur diese zwei Arten von Tieren, sondern 10/20/oder gar 50 -
ich habe gehört es sei sinnvoller auf switch case zu setzen, wenn es viele Fallunterscheidungen gibt.
Aber wieviele sind "viele"? Und gilt das auch für ArrayLists mit instanceof-Operator in jeder case-Klausel?
Gibt es eine bessere Lösung als isntanceof? (Ich habe gelesen, dass die Benutzung davon nicht gut für die Performance sei) Wie wäre es mit if -Anweisungen in der Art
Code:
if(tierListe.get(x).getClass()=="Vogel")
::gerade bemerkt, dass getClass in diesem Fall nur class arrayListClasses zurückgibt :noe: