Generischer Methode ein Array übergeben

einfachich

Mitglied
Hallo allerseits,

eine generische Methode erhält als Argument ein Array und soll es ausdrucken.
Java:
public class Test {
	public static void main(String[] args) {
		int[] w = {1,2,3,4,5};
		drucken(w);  //leider Fehlermeldung
	}

	public static <T> void drucken(T[] a){
		for (T i: a)
			System.out.println(i);
	}
}
Warum wird bei "drucken(w)" folgender Fehler angezeigt?
"The method drucken(T[]) in the type Test is not applicable for the arguments (int[])"

Kann das jemand erklären?
Danke + Gruß
 
Zuletzt bearbeitet:
Primitive Typen (int, float..) können nicht als Typparameter eingesetzt werden. Ggf. kann man stattdessen einen Integer[]-Array übergeben...
 
Danke.

Es funktioniert einwandfrei mit:
Java:
		Integer[] w = {5,4,8,3,8,7,1};

Klar, es dürfen bei generischen Typen immer nur Objekte (Referenzen, wegen Referenzsemantik) übergeben werden. Also müssen Wrapperklassen (wie Integer statt int, Character statt char) benutzt werden.

Ganz verstehen tue ich es zwar immer noch nicht, da auch int[] a ein Objekt ist und daher auch die Elemente dieses Array vom Typ int sein müssen, aber OK...
 
wenn du den Parameter T[] in T änderst, gehts, denn bei Fall 1 muss T = Integer sein und bei Fall 2 kann T = int[] sein. Allerdings kannst du beim 2. Fall nicht über das Array iterieren.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben