Parameterübergaben

Status
Nicht offen für weitere Antworten.
Hallo,

wer kann mir sagen, wie in folgendem Code die Parameterübergabe (T e) zu verstehen ist?
Kenne bisher nur die "simplen" Parameterübergaben, wie z.B. (int a, int b) o.ä.

Was ist hier T und was e?

Java:
public class MeineArrayList<E> {

    E[] list;
    int size;
    int capacity;
    int increment;
	
	
	// with initial capacity c
	public MeineArrayList(int c, int inc) {
        capacity = c;
        list = (E[]) new Object[c];
        size = 0;
        increment = inc;
    }
   
	public void add(T e){
		if (size >= capacity-1) increase();
		list[size] = e;
		size++;
	}

	private void increase(){
		T[] list2 = (T[]) new Object[capacity+increment];
		for (int i =0; i< size; i++)
			list2[i] = list[i];
			capacity = capacity + increment;
			list = list2;
	}

...und wieso funktionieren hier die Java-Tags nicht???

Illuvatar: "/" ist das richtige Symbol - bei dir war ein "⁄". Ich wusste nicht, dass es sowas gibt ;)
/⁄

absolute Beginner: auf dem Mac gibt´s so einiges... danke für den Hinweis!
 
Zuletzt bearbeitet:

Landei

Top Contributor
Das T soll sicher ein E sein, oder? class MeineArrayList<E> heißt, dass man sich MeineArrayList für einen bestimmten, aber vorher nicht festgelegten Typ bauen kann. E steht dann für diesen Typ. Wenn du eine MeineArrayList-Variable erstellst, musst du sagen, welcher Typ da "eingesetzt" werden soll, also z.B. MeineArrayList<String> stringList = new MeineArrayList<String>(); Dann wird überall, wo in der Definition ein E steht, jetzt String verwendet. Es können aber nur Klassen oder Arrays für E "eingesetzt" werden, primitive Typen (int, char, long, double...) gehen leider nicht.

Das ganze Konzept nennt sich "Generics". Mehr dazu unter Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 9 Generics, innere Klassen
 
Habe den Code so vorgegeben bekommen - was nicht unbedingt heißt, dass er fehlerfrei sein muss...
Unter dem Link von Galileo-Computing wird ja auch die Abkürzung T als gängige Abkürzung Typ-Variable angegeben. Wahrscheinlich hat hier einer mit T und E zwei Abkürzungen für ein und diesselbe Sache benutzt? Oder kann man zwei verschiedene Typ-Variablen in einer Klasse benutzen?
 
Status
Nicht offen für weitere Antworten.

Oben