Generic's und Vererbung

Melfis

Aktives Mitglied
Hallo an alle,
habe grade einen kleinen hänger :(
Ich habe eine Klasse "Test" und "AbstractTest",

Test soll..

-von ArrayList erben
-nur Objekte die von "AbstractTest" erben in die Liste aufnehmen
-Test soll kein generic's unterstützen

geht das überhaupt?
Ich habs mir so vorgestell:
Java:
public class Space2D extends ArrayList<? extends AbstractDrawObject>
funktioniert leider nicht :(

MFG Melfis
 
B

bygones

Gast
[c]public class Space2D extends ArrayList<AbstractDrawObject>[/c]
bei extends darf kein wildcard stehen.

und direkt von einer implementierung erben riecht stark nach designschwaeche
 

Landei

Top Contributor
Wenn es "reicht", dass [c]Space2D[/c] nur [c]AbstractDrawObject[/c]-Objekte zurückgeliefert werden, kannst du einfach schreiben:
Java:
public class Space2D extends ArrayList<AbstractDrawObject>

Wenn du allerdings [c]Space2D[/c]-Objekte haben willst, die jeweils nur verschiedene Unterklassen von [c]AbstractDrawObject[/c] akzeptieren bzw. zurückliefern, musst du sowas schreiben:
Java:
public class Space2D<T extends AbstractDrawObject> extends ArrayList<T>

Es ist allerdings ziemlich fragwürdig, ein Domänen-Objekt wie [c]Space2D[/c] von einer Collection abzuleiten, dafür ist in der Regel Komposition besser geeignet.
 
Zuletzt bearbeitet:

Melfis

Aktives Mitglied
[c]public class Space2D extends ArrayList<AbstractDrawObject>[/c]
bei extends darf kein wildcard stehen.

und direkt von einer implementierung erben riecht stark nach designschwaeche

Kann sein das ich da noch designschwaechen drin habe,
zu meinen Konzept:

Ich moechte ein kleines "CAD-Programm" schreiben.
Dazu brauch ich eine funktionale Zeichenfläche (Space2D)
und passende Zeichenobjekte (? extends Drawobjects).

Space2D ist prinzipiel nur eine Liste mit den Drawobjects und eine Handvoll Eigenschaften.

Ich wollte das Space2D von ArrayList erbt um auf alle Methoden der Liste zugreifen zu können,
gleichzeitig beim zugriff von this.get() mir das nervige unboxing zu ersparen.

Bin für Verbesserungsvorschläge immer offen

MFG Melfis
 
Zuletzt bearbeitet:
B

bygones

Gast
siehe landeis post. statt vererbung komposition nehmen !

niemals vererbung aufgrund von gemuetlichkeit/faulheit einsetzen
 

Melfis

Aktives Mitglied
Jap, die frage wurde durch Landei beantwortet.
Ich will ja auch nicht aus Faulheit vererben,
sondern weil ich in den Methoden(bzw beim Überschreiben) einen nutzen sehe,
naja, hab mich vieleicht falsch ausgedrückt.

Danke an euch beide
 

Landei

Top Contributor
Ich will ja auch nicht aus Faulheit vererben,
sondern weil ich in den Methoden(bzw beim Überschreiben) einen nutzen sehe,

Das reicht als Begründung nicht aus. Die Frage ist: Ist [c]Space2D[/c] eine Liste, oder benutzt es eine? Wenn du z.B. die Möglichkeit siehst, später einmal zusätzliche Daten (die nichts mit List zu tun haben) hinzufügen willst, benutzt [c]Space2D[/c] die Liste nur. Oder fügst du [c]ArrayList[/c] wirklich neue Listenfunktionialität hinzu, dann ist [c]Space2D[/c] tatsächlich eine Liste.

Was spricht gegen

Java:
public class Space2D {
   private List<AbstractDrawObject> elements = new ArrayList<AbstractDrawObject>();
   ...
   public List<AbstractDrawObject> getElements(){ return elements; } //oder eine schreibgeschützte Kopie
}

?

Dann kannst du alle Listen-Methoden an [c]Space2D.getElements()[/c] aufrufen.

Mit diesem Design werden spätere Änderungen einfacher. Hast du z.B. Threading-Probleme mit deiner [c]ArrayList[/c], kannst du sie durch eine [c]CopyOnWriteArrayList[/c] ersetzen. Willst du später benannte Elemente, kannst du sie durch eine [c]Map<String, AbstractDrawObject>[/c] ersetzen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
O Comparable Generic Java Basics - Anfänger-Themen 24
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
O Generic - Verstädnisproblem Java Basics - Anfänger-Themen 5
G instanceof in Generic Java Basics - Anfänger-Themen 7
N Datentypen LocalDate Generic Comparable Java Basics - Anfänger-Themen 2
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
M Generic Prüfungsvorbereitung Java Basics - Anfänger-Themen 4
G Generic und Listen Java Basics - Anfänger-Themen 8
J Generic - Autoboxing Java Basics - Anfänger-Themen 18
N Generic clonen => eclipse empfiehlt @SuppressWarnings("unchecked") Java Basics - Anfänger-Themen 2
S Generic Java Basics - Anfänger-Themen 9
P Java Generic Wildcard Java Basics - Anfänger-Themen 2
G Namen der Generic Klasse Java Basics - Anfänger-Themen 3
D generic extendet class Java Basics - Anfänger-Themen 10
B Generic? Enum - So lösbar? Java Basics - Anfänger-Themen 8
capgeti Datentypen Static generic return value von Subclass? Java Basics - Anfänger-Themen 9
C Generic Tutorial Java Basics - Anfänger-Themen 12
T Generic vom Generic: Zu sehr verschachtelt? Java Basics - Anfänger-Themen 6
V libssrckdtree-j Generic k-d tree Java library - weiss nicht wo des hin soll Java Basics - Anfänger-Themen 2
L Sinn hinter Generic? Java Basics - Anfänger-Themen 5
0 Was bedeutet dieser Generic-code? Java Basics - Anfänger-Themen 3
A Generic Problem Java Basics - Anfänger-Themen 16
S Generic Methode: syntax klemmt Java Basics - Anfänger-Themen 10
S Generic: Verständnisfrage Java Basics - Anfänger-Themen 2
S generic programmierung "ne:w T[X]" Java Basics - Anfänger-Themen 2
G generic interface problem Java Basics - Anfänger-Themen 12
Safado generic array creation Java Basics - Anfänger-Themen 2
G Frage zur Generic java ? Java Basics - Anfänger-Themen 9
G eine Frage zur Generic Java ? Java Basics - Anfänger-Themen 8
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben