Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht?

s0mbre

Mitglied
Also angenommen ich habe ein Objekt einer Klasse, die diverse Unterklassen hat. Und mein Objekt entspricht einer dieser Unterklassen. Dann kann ich theoretisch ja mit OBJEKT instanceof UNTERKLASSE_OBJEKT durch alle Unterklassen gehen und für jeden gucken, wie sich die expression auswertet. Wenn ich jetzt aber 100 Unterklassen habe, gestaltet sich diese Methode als unpraktisch, weswegen ich nach einer Alternative suche
 
Die Klasse entspricht einem Element, dass ich auf einer graphischen Oberfläche zeichnen möchte. Und wenn ich nicht weiß, von welcher Art Unterklasse mein (zufällig) generiertes Objekt ist, weiß ich nicht, welches Bild ich laden muss.
(ich habe auch keine 100, aber die 10 Zeilen if bedingung sehen trotzdem nach garbage code aus)
 
Ich würde mal in den Raum werfen, dass eine separate Klasse für jedes Element deiner Oberfläche nicht der Beste Ansatz ist.
Zumindest klingen 100 Unterklassen seehr fragwürdig.
 
Meinst du mit Unterklassen:

Java:
class UnterUnterKlasse extends UnterKlasse {}

class UnterKlasse extends OberKlasse {}

class OberKlasse {}

Und wie schon @Robat erwähnte ist das kein guter Ansatz.

Hast du vielleicht ein Beispiel (Code)?

Grüße
 
Kann leider kein Beispiel Code geben, weil das teilweise geschützt ist und aus diversen anderen Gründen. Meine Rahmenbedingungen lassen keinen anderen Ansatz zu, aber ich werde wohl auf instanceof zurückgreifen müssen.. ^^'
Trotzdem danke 🙂
 
Als Rahmenbedingung?.. Nun gut..

Musst du - wenn ich dich richtig verstanden habe - nicht.
Du willst anhand des Types eines Objektes ein gewisses Bild laden. Wieso besitzen dann die Objekte nicht ein entsprechendes Attribut was bspw. den Pfad zum Bild oder das Bild an sich enthält?
 
Es geht wirklich nicht, und ich weiß es ist komisch, und so dumm es klingt, ich darf keine Rahmenbedingungen preisgeben ^^' ich komm mir hier grade langsam bescheuert vor xD
wollte doch nur wissen, ob es eine Alternative zu instanceof gibt 🙁
 
Wenn du ein Attribut hinzufügen kannst, kannst du ja auch einen Identifier für das Bild hinzufügen, dann sind deine Unterklassen nicht jeweils "Sonderfälle" sondern jede Unterklasse hat eine gemeinsame Schnittstelle, die sagt, welches Bild auszuwählen ist.
 
Wenn du ein Attribut hinzufügen kannst, kannst du ja auch einen Identifier für das Bild hinzufügen, dann sind deine Unterklassen nicht jeweils "Sonderfälle" sondern jede Unterklasse hat eine gemeinsame Schnittstelle, die sagt, welches Bild auszuwählen ist.
Allerdings halt nicht nur mit Klassenattributen (die Anforderung ist aber auch ziemlich ... ungünstig)
 
Sonst geht natürlich auch, wenn auch nicht schön:

Du erstellst eine Map<Class, string>, in der du pro Unterklasse einen string reinspeicherst:
Java:
map.put(UnterklasseXYZ.class, "path")

Und wenn du dann dein Objekt hast, rufst du:

Java:
map.get(object.getClass())

auf.
Ist nicht schön, aber sollte funktionieren. Vermeidet riesige If-Bäume.
 

Neue Themen


Zurück
Oben