Che cosa significa <T>
nel seguente frammento di codice?cosa significa <T> in <T> vuoto()
class Test {
<T> void say() {
}
}
Che cosa significa <T>
nel seguente frammento di codice?cosa significa <T> in <T> vuoto()
class Test {
<T> void say() {
}
}
introduce un tipo di segnaposto, dove T
forse praticamente qualsiasi tipo. Questo è in genere utile se T
fa parte della firma (o come un parametro o un tipo di ritorno):
<T> void say(T myT) {}
say<Object>(myObject);
say<String>(myString);
<U> U foo(U u) { return u; }
String s = foo<String>("");
E 'raramente utile introdurre un parametro di tipo solo per uso interno, come l'attuale T
è spesso più interessante per il consumatore rispetto al metodo.
Vedi this doc about generics in java
ma è utile solo se si è parametized tipi nella lista degli argomenti.
Nel tuo esempio non ha alcun senso. Ma in altri casi, se il tipo di restituzione del metodo è vuoto, <T>
può ancora essere utilizzato come tipo di parametri generici previsti. Considerate questo controllo di sicurezza tipo
public static <T> void test(List<T> list1, List<T> list2) {
list1.addAll(list2);
}
public static void main(String[] args) throws Exception {
test(Arrays.asList(1, 1), Arrays.asList("1", "1"));
}
, javac dà un errore, prova() si aspetta Elenchi dello stesso tipo.
altro esempio java.util.Collections.fill
public static <T> void fill(List<? super T> list, T obj) {
....
}
tipo di controllo di sicurezza di nuovo.
... è possibile eliminare l'intera classe AFAIK. –