metodi generici sono metodi dichiarati con qualsiasi tipo generico parametro. Vedere documento here. Il tipo generico del metodo non deve essere correlato a nessun parametro di tipo generico della classe dichiarante. La classe può o non può essere generica.
Quando si richiama un metodo generico (statico o meno), è possibile specificare il tipo generico ma di solito non lo si vede perché di solito è rilevato automaticamente. Quella sintassi che hai trovato è quella che lo specifica.
Se c'è un metodo dichiarato come questo:
<T> void fromArrayToCollection(T[] a, Collection<T> c) { ...
si può chiamare in questo modo:
Integer[] a = ...
ArrayList<Integer> l = ...
x.fromArrayToCollection(a, l);
ma se avete uno come questo:
<T> Collection<T> myMethod(int c) {
return new ArrayList<T>(c);
}
Quindi hai due modi per chiarire il tipo al compilatore. Puoi dargli abbastanza informazioni in due modi.
Uno si specifica il tipo di chiamata:
Object c = x.<Integer>myMethod(5);
L'altro è con un typecast (esplicita o implicita assegnando ad una variabile):
Collection<Integer> c = x.myMethod(5);
E 'parametri generici per metodo statico ' di ', non per la classe stessa. –