instanceof vermeiden und stattdessen dynamisch binden

JonnyRico

Mitglied
Moin,

ich habe da mal ein kleines Problem. Ich bekomme ein Throwable-Objekt in eine Methode übergeben und würde jetzt gerne je nach konkreter Ausprägung einen bestimmten Rückgabewert erzeugen. Ungern möchte ich eigentlich sowas machen:

Java:
public myMethod(Throwable e) {
   if (instance of ExceptiontypeA) 
      return "e1";
   else if (instance of ExceptiontypeB) {
      return "e2";
   /* ... */
}

lieber hätte ich sowas wie:

Java:
public myMethod(Throwable e) {
   return dynamic(e);
}

private String dynamic(ExceptiontypeA e) {return "e1";}
private String dynamic(ExceptiontypeB e) {return "e2";}

Leider funktioniert dies nicht, da anscheinend hier das dynamische Binden nicht klappt. Hat jemand einen Tip wie es doch gehen kann? Vielen Dank im Voraus

Gruß

Jonny
 
Was gefällt dir am ersten Beispiel nicht? Viel Code wegen den Abfragen? Dann pack die Objekte auf die du prüfen willst in eine Map und iteriere mit einer Schleife drüber.
 
Warum sollte instanceof dem OO-Gedanken widersprechen?

Vllt. solltest du überlegen ob es eine Möglichkeit gibt den Code so umzubauen, dass du das Throwable nicht benötigst.

Aber wenn du nur ein Throwable hast, dann kommst du ohne eine Abfrage auf den genauen Typ nun mal nicht weit...
 
Naja eben genau weil der OO-Gedanke die Polymorphie ist und somit das dynamic-dispatch. Im Normalfall will man ja eben genau nicht abfragen müssen um welchen Datentyp es sich handelt, sondern durch dynamisches Binden die behandelnde Methode "finden" lassen.
Leider kann ich das nicht ändern, da ich mich in einem ServletWrapper befinde und die Schnittstelle leider ein Throwable definiert ;(
Naja okay dann muss ich das wohl anders lösen.....
 

Zurück
Oben