Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen?

SnrufjStill

Mitglied
Auf der Suche nach einer Antwort dazu habe ich mich im Internet verloren und verlange nun hier eine Antwort. Im Grunde habe ich es verstanden, wie man damit umgeht, aber warumsollte ich jemals eine Generische Klassen benutzen wenn ich doch java.util.ArrayList habe und das ist für mich der einzige vernünftige Anwendungsgrund, der mir einfällt.

Ich meine, als Programmierer ist mir (zumindest aus meiner Erfahrung) immer bewusst gewesen was ich in den Variablen Speicher möchte aber nicht wie viel, z.B. ein Inventar das, wie bei Skyrim nach Gewicht geht anstatt nach Itemslots. Da brauche ich ein flexibles Array.
 

Tobse

Top Contributor
Generics werden in der Tat selten eingesetzt. Es kommt aber doch hin und wieder vor, das man sie braucht. Ich weiss nicht, wie lange du schon Java machst; aber früher oder später kommt der Tag, an dem du etwas umsetzen willst, was nur mit Generics sinnvoll machbar ist.

Vieles von dem, wofür Genrics wie geschaffen sind, ist von Java schon implementiert (so auch die ArrayList). Noch ein paar andere Beispiele:
  • Alle Collections:
    • List (ArrayList, LinkedList, DoubleLinkedList)
    • Set (HashSet) u.s.w.
  • Die Streams aus Java 8 und alle möglichen operationen mit Streams und Collections:
    • Stream
    • Consumer
    • Comparator und Comparable
    • Predicate
    • u.s.w.
Und gelegentlich braucht es auch mal eine generische Methode. Ich habe beispielsweise letztens folgende Methode geschrieben:
Java:
/**
 * Registers the given component with the given entity.
 * @param e The entity to associate the given component with. If not registered with this system yet the entity will
 *          be registered.
 * @param c The component to register.
 * @param asType The type to register the component as. This is useful for subclassed components,
 *               e.g. class X extends HealthComponent: registerComponent(e, new X(), HealthComponent.class))
 * @throws ComponentTypeAlreadyRegisteredException If a component of type <code>asType</code> is already registered
 * with the given entity.
 */
public synchronized <T> void registerComponent(Entity e, T c, Class<? super T> asType)
{ ... }
 
K

kneitzel

Gast
Also wenn man mit Generics nutzen nicht die Verwendung von Klassen mit Generics meint, dann ist das durchaus stimmig, dass diese seltener benutzt werden. In eigentlichen Applikationen hat man halt ein bis zum Ende durchdachtes Design und nutzt Interfaces und Oberklassen.

Aber sobald man anfängt, generische Klassen zu schreiben, dann kommen die sehr schnell auch ins Spiel. Wir haben auf Arbeit unsere eigenen Komponenten und da sind dann Generics oft genug Mittel der Wahl.

Wenn man die Nutzung von Klassen mit Generics auch als Nutzen von Generics ansieht, dann ist es übrigens ein täglich Brot, die Generics zu nutzen. Dann wird - je nach Anforderung - halt schnell eine HashMap<K,V> oder so genutzt.

Konrad
 

Steven Hachel

Bekanntes Mitglied
Ich könnte mir eine Softwareentwicklung ohne Generics gar nicht mehr vorstellen...
Vor mehr als 10 Jahren konnte ich damit auch nix anfangen. War damals ein großer Sprung sowie seit Java8 die Lamdas und Streams... Ist der Hammer. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
M Generische Klassen "FlaschenRegal" Java Basics - Anfänger-Themen 13
M Klassen Generische Klassen, Personen und Gruppen Java Basics - Anfänger-Themen 6
W Generische Klassen Java Basics - Anfänger-Themen 3
W Generische Klassen und Casting Java Basics - Anfänger-Themen 6
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
J generische klassen neue Instanz Java Basics - Anfänger-Themen 5
H Generische Klassen. Java Basics - Anfänger-Themen 16
I Generische Funktion Java Basics - Anfänger-Themen 3
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
H Generische Konstruktor Java Basics - Anfänger-Themen 12
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
D Generische Klasse Java Basics - Anfänger-Themen 6
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
O Generische Typen Java Basics - Anfänger-Themen 9
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
J Sortierte generische Liste Java Basics - Anfänger-Themen 1
D statische generische Methoden Java Basics - Anfänger-Themen 3
S Wie muss ich die Generische Methode schreiben? Java Basics - Anfänger-Themen 6
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
N Generische Schnittstellen Java Basics - Anfänger-Themen 2
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
D Generische Typen Java Basics - Anfänger-Themen 20
L Generische Liste Java Basics - Anfänger-Themen 4
B Generische Queue programmieren Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
A Probleme mit MergeSort Generische Liste Java Basics - Anfänger-Themen 0
A Generische Methode Java Basics - Anfänger-Themen 4
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
M Generische Liste Java Basics - Anfänger-Themen 4
B Generische Methode Java Basics - Anfänger-Themen 2
B Generische Klasse Java Basics - Anfänger-Themen 7
B Generische Methoden Java Basics - Anfänger-Themen 8
F Collections Generische Klasse/Methoden Java Basics - Anfänger-Themen 19
L Generische Warteschlange Java Basics - Anfänger-Themen 8
A Generische Datentypen Java Basics - Anfänger-Themen 8
bluerob generische ArrayList -> erbende Objekte auslesen Java Basics - Anfänger-Themen 24
L Generische Containerklasse Java Basics - Anfänger-Themen 9
V Methoden Umwandlung in generische Methode Java Basics - Anfänger-Themen 8
A Generische Collections und Vererbung Java Basics - Anfänger-Themen 2
S Generische HashMap Java Basics - Anfänger-Themen 2
L Generische ArrayList, CastProblem Java Basics - Anfänger-Themen 2
W generische Module Java Basics - Anfänger-Themen 2
S Generics und "generische Feldzuweisungen" Java Basics - Anfänger-Themen 5
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
D Datentypen Generische Collections und Warnings Java Basics - Anfänger-Themen 8
F Generische Methoden Problem Java Basics - Anfänger-Themen 5
E Generische Arrays durch Typecast mit Object-Array Java Basics - Anfänger-Themen 11
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
B Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? Java Basics - Anfänger-Themen 14
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
J array über generische arraylist Java Basics - Anfänger-Themen 7
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
N 2 dimensionale generische Arrays Java Basics - Anfänger-Themen 9
H Statische generische Methode Java Basics - Anfänger-Themen 2
G Frage zum Ungang mit Generische Datentypen Java Basics - Anfänger-Themen 4
0x7F800000 generische arrays mal wieder )-; Java Basics - Anfänger-Themen 6
D generische methode <T> void . Java Basics - Anfänger-Themen 9
J Generische Methoden Java Basics - Anfänger-Themen 6
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
S Parameterübergabe: Generische Klasse Java Basics - Anfänger-Themen 4
S generische Felder Java Basics - Anfänger-Themen 2
P Generische Klasse Java Basics - Anfänger-Themen 8
F Generische Methode - was bringt der Wildcard Operator? Java Basics - Anfänger-Themen 7
F Generische Liste von generischen Objekten. Java Basics - Anfänger-Themen 3
H generische Methoden Java Basics - Anfänger-Themen 5
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
H generische Bausteine, heterogene Datenstrukturen Java Basics - Anfänger-Themen 2
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben