Nun möchte ich eine ArrayList erstellen, die Objekte aus BEIDEN Klassen beinhalten kann. Grundsätzlich habe ich schon gesehen, dass es über List<Object> = new ArrayList..... möglich wäre. Diese Lösung möchte ich aber, wenn möglich vermeiden.
Ich habe schon eine weile darüber nachgedacht, im Notfall würde ich versuchen bestimmte Klassen zusammenzulegen, was kein Problem wäre, aber die Trennung wäre mir lieber.
Mein Ansatz wäre evtl. eine neue Klasse zu erstellen die beide Objekte enthält, aber wie das dann in eine Liste gepackt werden kann, die dann auch geschlossen aufgerufen werden kann, weiß ich nicht...
Wenn beide Klassen (mal abstrakt gesprochen) `A` und `B` keine gemeinsame Schnittstelle haben (außer java.lang.Object), dann ist `List<Object>` genauso gut wie jede andere Lösung. Denn, wenn du die Objekte wieder aus der Liste ausliest, musst du sowieso einen Check auf den Laufzeittyp des Objektes machen, da du ja nicht vorher weisst, ob das nun ein `A` oder ein `B` ist. Und wenn du es wüsstest, musst du sowieso einen Cast anwenden. Du kannst dir natürlich eine eigene Listen-Abstraktion schreiben, mit Überladungen von add(A) und add(B), um typsicher entweder A oder B hinzuzufügen und intern eine List<Object> halten.
Generell halte ich es aber für nicht sinnvoll, in einer Liste sowohl `A` als auch `B` zu speichern, wenn beide nichts miteinander zu tun haben. Da ist dann die Problemdomäne eher suboptimal modelliert.
Wenn beide Klassen (mal abstrakt gesprochen) `A` und `B` keine gemeinsame Schnittstelle haben (außer java.lang.Object), dann ist `List<Object>` genauso gut wie jede andere Lösung. Denn, wenn du die Objekte wieder aus der Liste ausliest, musst du sowieso einen Check auf den Laufzeittyp des Objektes machen, da du ja nicht vorher weisst, ob das nun ein `A` oder ein `B` ist. Und wenn du es wüsstest, musst du sowieso einen Cast anwenden.
Generell halte ich es aber für nicht sinnvoll, in einer Liste sowohl `A` als auch `B` zu speichern, wenn beide nichts miteinander zu tun haben. Da ist dann die Problemdomäne eher suboptimal modelliert.
Wenn ich das Objekt caste, wäre das nicht dann so etwas wie die instanceOf Methode? Das ist konkret die Funktion die ich vermeiden will, dass es ja als kein guter Programmierstil gilt.
Der Hintergrund ist eine Lastzug-Modellierung an den verschiedene Anhänger angehängt werden können. Diese Liste Möchte ich später quasi als "kompletten Lastzug" inkl. Anhänger interpretieren. Meine Klassen sind eben der Lastzug und verscheiene Anhänger jeweils in einer Klasse.
Dann würde ich erstmal fragen, welche Vorteile es dir bringt, bzw. welchen Anwendungsfall es abdeckt, dass du eine Liste hast, in der sowohl der eine Lastzug als auch `seine Anhänger enthalten sind?
Man könnte bestimme Anhänger löschen, hinzufügen, hätte einen einfachen Zugriff auf die Länge des Lastzuges.
Welche Modellierung würdest du vorschlagen um dies abzubilden? Die einzelnen Anhänger vielleicht in eine Klasse packen?