Generics zu gehen mit primitiven Typen nicht funktioniert, nur mit Objekttypen.
Sie können tun, was Generika wie mit mit primitiven Typen sehen, aufgrund Auto-Box:
<T> void methodOne(T value) {}
methodOne(1); // Compiles OK, T = Integer.
Was passiert hier eigentlich ist, dass die int
wörtlichen 1
„boxed“ zu Integer.valueOf(1)
wird, das ist, ein Objekt vom Typ Integer
.
Sie können auch eine int[]
an eine generische Methode übergeben, weil int[]
ein Objekttyp selbst ist. Also:
methodOne(new int[1]); // Compiles OK, T = int[].
Sie können jedoch nicht, diese beiden mit dem gleichen Typ Variable mischen: int[]
und Integer
sind nicht verwandte Arten, so gibt es keine einzelne Variable vom Typ T
, die von beiden Parameter erfüllt ist. Es gibt keinen gleichwertigen Auto-Box-Operator von int[]
bis Integer[]
.
Als solche würden Sie brauchen eine Integer[]
Array als ersten Parameter zu übergeben:
method(new Integer[1], 0);
Generics nicht mit primitiven Typen nicht funktioniert, es ist für Objekte nur. Versuchen Sie stattdessen mit 'new Integer [1], 0'. –
Es ist auch ein Grund, warum 'Double',' Integer', 'Boolean', ... in Java erstellt wird. –
Was meinst du damit, wenn du sagst, dass Primitive nicht mit generischen Typen arbeiten? Int funktioniert gut, es ist nur das Array, das Probleme verursacht – Dimpl