Ich habe eine Frage zu Technik und Implementierung, anstatt ein Problem zu lösen. Vor kurzem habe ich eine abstrakte Klasse erstellt, nennen wir sie A, die die allgemeinen Verhaltensweisen ihrer Unterklassen definiert.Instanceof und Type-Casting Techniken
Ich verwende diese mehrere Subklassen B, C und D, die dann in einem anderen Verfahren außerhalb der übergeordneten Klasse-Unterklasse Struktur, die in einem Typ A (so in der Lage nimmt übergeben werden konstruieren sind, um alle von B zu handhaben , C und D).
In Java benutze ich instanceof, um den wahren Typ zu erhalten, aber ich muss am realen Typ viel Casting machen, und es sieht wie ein Durcheinander aus. Hat jemand irgendwelche Vorschläge, wie man den Code sauberer machen kann?
Eine Methode, die ich ausprobiert habe, war, eine Instanz des Unterklasse-Typs aus den Parametern der Oberklasse zu rekonstruieren, so dass ich das Objekt mit seinem tatsächlichen Typ behandeln würde, um so die Typumwandlung zu vermeiden. Da jede dieser Unterklassen Singletons sind (ja, sie halten den Zustand), fühle ich mich wohl dabei. Scheint das wie eine miese Sache zu tun?
Dank an jeden, der antwortet, wird es sehr geschätzt!
Bearbeiten: Ich fügte weitere Klarstellung in Kursivschrift hinzu. Vielen Dank.
Hallo, ich habe dein Problem, und es ist ein schwer zu googeln (ich habe Glück, dass ich es gefunden habe). Können Sie nach längerer Erfahrung diese Frage definitiv beantworten? – bigstones
Versuchen Sie, die Methode so oft wie möglich zu überladen, so dass Sie nie den wahren Typ kennen müssen. Solange jede Unterklasse eine gemeinsame Methode mit verschiedenen Implementierungen hat, müssen Sie den wahren Typ nie kennen. Für e.x. Wenn ich die abstrakte Klasse Animal und die Klassen Dog und Cat habe, die Animal erweitern, würde ich statt einer Methode woof() und einer Methode meow() eine Methode makeSound() oder speak() erstellen, die in beiden existiert. – AlbertoPL