Frage von Makichan, 38

Was ist de Variablentyp/Rückgabetyp E?

Hallo, ich habe in letzter Zeit öfters gesehen, dass eine Variable in Java-Programmen als "E" deklariert wurde, konnte aber bisher nicht feststellen, was für ein Variablentyp das sein soll... Danke schonmal :)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, Community-Experte für Java, 14

<E> und <T> usw... stehen für Wildcards in Java-Generics. 

Wildcard könnte man als Platzhalter für eine 'unbekannte Klasse' bezeichnen, wobei der Buchstabe aber eigentlich frei wählbar ist, jedoch in der Standard API sich eine Konvention breit gemacht hat:

  • E soll für Element stehen. 
  • T für Type. 
  • K für Key und 
  • V für Value.

Die Klasse, die so etwas verwendet, muss den Exakten Typ nicht kennen um zu funktionieren. Jedoch gleichzeitig diesen Typ unterstützen.

Ein Beispiel hierbei wäre die List.

Eine List wird üblich mit einem Typen deklariert:

List<MyClass> myList;

Dabei kann eine Liste ja Objekte anfügen, abfragen und löschen, hierbei ist es ja völlig egal von welchem Typ das Objekt ist.

Spezifizierst du aber nun den Inhalt wie in der Deklaration, so wirst du feststellen, dass mit der Methode: add() auch nur Objekte von der Klasse MyClass anfügbar sind.

Dasselbe gilt für die Methoden get() und remove().

Dir hilft es, wenn du vorher definierst, von welcher Klasse die Elemente deiner Liste sind und gleichzeitig erleichtert es dir die Handhabung beim Verwenden der Liste.

Diesen Vorteil dürftest du auch bei der Iteration erkennen, bei der du anschließend nämlich folgendermaßen die Werte durchlaufen kannst:

for (MyClass klasse : myList) {
   ...
}
Antwort
von ceevee, 20

Das klingt nach einem Generic

http://openbook.rheinwerk-verlag.de/javainsel/javainsel_09_001.html

Will heißen: die Klasse soll dynamisch mit mehreren Variablentypen funktionieren - konkret wird der Typ dann erst bei der Objekterzeugung angegeben. Ein einfaches Beispiel ist die List-Klasse...

List<String> ist eine Liste von Strings.

List<Integer> ist eine Liste von Ganzzahlen

List<Kartoffel> ist eine Liste von Kartoffel-Objekten...

und so weiter...

Antwort
von pastweights, 20

Meinst du das hier: http://stackoverflow.com/questions/20255911/what-does-the-e-in-java-mean

Kommentar von Makichan ,

Ja, genau das meine ich :D

Keine passende Antwort gefunden?

Fragen Sie die Community