Vermeiden von instanceof Abfragen

Status
Nicht offen für weitere Antworten.

mauroalberti

Mitglied
Hallo zusammen,

ich würde in einer Legacy-Anwendung gerne einen meiner Meinung nach sehr unschönen Teil refactoren, stehe aber irgendwie ein bißchen auf'm Schlauch...

Wir haben folgende Vererbungshierarchie:

- Wertgegenstand (Oberklasse)
- Schiff, Festfeld (Unterklassen, die beide jeweils von Wertgegenstand erben)

In der Anwendung gibt es eine Methode

[HIGHLIGHT="Java"]kopiere(Wertgegenstand quelle, Wertgegenstand ziel)[/HIGHLIGHT]

in der einige Attribute kopiert werden (es geht nichts über gutes Naming ;-)).

Am Ende der Methode kommt dann der unschöne Abschnitt

[HIGHLIGHT="Java"]if (quelle instanceof Schiff && ziel instanceof Schiff)
{
// casten auf Schiff und kopieren der Schiffsattribute
}
else if (quelle instanceof Festgeld && ziel instanceof Festgeld )
{
// casten auf Festgeld und kopieren der Festgeldattribute
}[/HIGHLIGHT]

Diesen Abschnitt würde ich gerne ersetzen.

Meine Idee geht in die Richtung für jede Unterklasse eine Art KopierAssistenten-Klasse zu haben, also eine Klasse mit jeweils einer der folgenden Methoden:

kopiere(Schiff quelle, Schiff ziel)
kopiere(Festgeld quelle, Festgeld ziel)

Mein Problem ist nun, wie ich ohne eine weitere Prüfung mittels instanceof in der oben beschriebenen Methode die korrekte KopierAssistenten-Klasse aufrufe.

Falls einem von Euch ne andere, bessere Idee einfällt, darf es diese selbstverständlich auch gerne vorstellen ;-) Es sollte aber eine Lösung mit dem Fokus auf der oben beschriebenen Methode mit den instanceof-Prüfungen sein, da ich keine größere Änderung am Design der betroffenen Klasse vornehmen kann/darf/will...

Vielen Dank für eure Hilfe!!
 
Zuletzt bearbeitet von einem Moderator:

tfa

Top Contributor
Wie wär's mit der Methode:

Wertgegenstand.copyFrom(Wertgegenstand o)

Schiff und Festgeld überschreiben diese dann entsprechend.
Was passiert, wenn man ein Schiff in Festgeld kopieren will oder umgekehrt?
 

mauroalberti

Mitglied
Die fachlichen Klassen (also Wertgegenstand, Festgeld und Schiff) selbst dürfen nicht angefasst werden. Ich bräuchte also eine Lösung die keine Änderungen an diesen Klassen erfordert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J instanceof vermeiden und stattdessen dynamisch binden Allgemeine Java-Themen 6
J instanceof vermeiden Allgemeine Java-Themen 10
W Überflüssige Deklaration vermeiden...war da nicht mal was? Allgemeine Java-Themen 3
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
B einen color-chooser bauen, ähnliche Farben vermeiden Allgemeine Java-Themen 5
G Input/Output NIO.2: ShutdownChannelGroupException vermeiden Allgemeine Java-Themen 1
A Java - Beim Abspeichern Redundanzen vermeiden! Allgemeine Java-Themen 6
M Harten Cast vermeiden Allgemeine Java-Themen 7
D java.util.ConcurrentModificationException - per Copy vermeiden Allgemeine Java-Themen 11
J Generics / vermeiden von downcasts Allgemeine Java-Themen 2
R java.util.ConcurrentModificationException vermeiden? Allgemeine Java-Themen 8
N Casten durch generic vermeiden ?? Allgemeine Java-Themen 10
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
T Wie kann ich einen doppelstart vermeiden? Allgemeine Java-Themen 9
T Concurrent Modification Exception vermeiden mit Prioritäten Allgemeine Java-Themen 4
B Vermeiden das JButton schneller hintereinander drücken Allgemeine Java-Themen 3
mihe7 equals und instanceOf pattern matching Allgemeine Java-Themen 9
M instanceof bei generischer Methode Allgemeine Java-Themen 3
E instanceof mit nicht öffentlichen Klassen Allgemeine Java-Themen 2
D instanceof oder was anderes? Allgemeine Java-Themen 12
S Kompositum Muster ohne Exception oder instanceof Operator Allgemeine Java-Themen 6
S instanceof liefert true, aber cast funktioniert nicht! Allgemeine Java-Themen 6
P instanceof mit variabler klasse Allgemeine Java-Themen 3
G Probleme mit ÜbergabeParameter für instanceof Allgemeine Java-Themen 3
T Klasse => Primitiv ? Object instanceof Klasse Allgemeine Java-Themen 2
T Generics und instanceof Allgemeine Java-Themen 10
M Ersatz fuer instanceof Allgemeine Java-Themen 11
Y instanceof unschön ! Allgemeine Java-Themen 6
S instanceof und null Allgemeine Java-Themen 7
S instanceof mit genrics Allgemeine Java-Themen 3
ReinerCoder Case statt if else Abfragen?! Allgemeine Java-Themen 8
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
VfL_Freak KeyEvent.VK_TAB im KeyListener abfragen Allgemeine Java-Themen 13
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
B Generelle Frage bei einer Webanwendung / Reduzierung von DB Abfragen Allgemeine Java-Themen 1
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
D TextBox Abfragen Allgemeine Java-Themen 2
kodela aktuelle Position des Hauptfensters abfragen Allgemeine Java-Themen 12
J Tonhöhe & Lautstärke abfragen? Allgemeine Java-Themen 3
K USB infos unter Linux abfragen? Allgemeine Java-Themen 2
P Threads Parallelisierte DB-Abfragen mit variabler Anzahl an Threads Allgemeine Java-Themen 4
MiMa Variableninhalte dynamisch abfragen Allgemeine Java-Themen 12
A Erste Schritte If Abfragen + Scanner Allgemeine Java-Themen 7
Z AD Abfragen mit Java! Allgemeine Java-Themen 3
L Abfragen ob Threads fertig Allgemeine Java-Themen 3
chuxXo BasicPlayer - Beendigung Abfragen (Allgemein) Allgemeine Java-Themen 21
P Name der Parent Klasse abfragen Allgemeine Java-Themen 8
H In windowClosing() abfragen, ob STRG gedrückt wurde Allgemeine Java-Themen 8
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
M CapsLock abfragen wenn Fenster wieder aktiviert wird Allgemeine Java-Themen 5
P Variablen Werte der Objektvariablen mit getFields() abfragen Allgemeine Java-Themen 2
P Klassen Template-Klasse für Datenbank-Abfragen erstellen Allgemeine Java-Themen 2
J XML Inhalt von Web abfragen Allgemeine Java-Themen 6
D Von mehreren Objekten eine Eigenschaft abfragen Allgemeine Java-Themen 11
S HTTP Filmgenre aus dem Internet abfragen! Allgemeine Java-Themen 6
M Zahl aktiver Threads einer Gruppe verlässlich abfragen Allgemeine Java-Themen 3
R Was ist hier falsch? Abfragen Allgemeine Java-Themen 3
E Unique Ids abfragen? Allgemeine Java-Themen 5
Airwolf89 Wahrheitstabelle abfragen Allgemeine Java-Themen 3
M ständiges abfragen einer .txt Allgemeine Java-Themen 2
S Zeitserver Abfragen und in Date speichern Allgemeine Java-Themen 5
V Hostname abfragen gelingt nicht immer Allgemeine Java-Themen 2
H Windows abfragen Allgemeine Java-Themen 2
M Enter Taste in Konsole abfragen Allgemeine Java-Themen 2
N IP-Adresse Eingabe abfragen? Allgemeine Java-Themen 4
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
C Batchdatei ausführen und Ergebnisse abfragen Allgemeine Java-Themen 8
M SQL-Installation abfragen Allgemeine Java-Themen 14
Z Wetterdaten abfragen Allgemeine Java-Themen 5
J Zweiter Prozess der alle x Sekunden etwas abfragen soll Allgemeine Java-Themen 2
R Zugriffsrechte abfragen Allgemeine Java-Themen 2
R boolean im Bean abfragen Allgemeine Java-Themen 18
G Checkboxen abfragen,Auswahl sichern, JTable laden Allgemeine Java-Themen 2
G Mausbewegung abfragen? Allgemeine Java-Themen 2
C Binärbereich einer Variablen abfragen Allgemeine Java-Themen 8
S Datenbank Abfragen mit großen Datenmengen Allgemeine Java-Themen 22
H Mit Java Desktop abmessungen height/width abfragen Allgemeine Java-Themen 20
H Sekunden messen wie lange h.ibernate/jdbc abfragen brauchen Allgemeine Java-Themen 7
G Abfragen des types Allgemeine Java-Themen 7
I Am System angemeldeten Benutzer abfragen Allgemeine Java-Themen 11
P verfügbare COM Schnitstellen abfragen Allgemeine Java-Themen 4
P <null> in einer DB abfragen Allgemeine Java-Themen 4
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
T Hibernate Criteria Queries - Abfragen von Collection-Members Allgemeine Java-Themen 2
E Viele if Abfragen auf viele Strings --> Alternative zu if Allgemeine Java-Themen 8
T Tastatur global abfragen Allgemeine Java-Themen 2
M Map gezielt abfragen? Allgemeine Java-Themen 5
MQue Vereinfachung von if- Abfragen Allgemeine Java-Themen 21
Chris_1980 Mausbewegung abfragen Allgemeine Java-Themen 4
E Events von inneren Klasse abfragen Allgemeine Java-Themen 7
B jre version in der html-datei für ein applet abfragen Allgemeine Java-Themen 5
S Prozessorauslastung abfragen Allgemeine Java-Themen 2
C Tastatureingabe in einem Frame abfragen Allgemeine Java-Themen 2
R Thread.sleep - abfragen Allgemeine Java-Themen 4
S Name der ausführenden jar-Datei abfragen Allgemeine Java-Themen 11
S Abfragen der Komponente bei actionperformed Allgemeine Java-Themen 2
A Dateistatus abfragen und Datei löschen sobald kein Zugriff Allgemeine Java-Themen 7
G JavaMail - Message vom Server, wie abfragen? Allgemeine Java-Themen 2
J Name des aktuell aktiven Windows-Fensters abfragen? Allgemeine Java-Themen 4
T Bittorrent TRACKER abfragen mit JAVA Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben