public <E extends Foo> List<E> getResult(String s);
dove Foo
è la mia classe.Perché questo metodo Java sembra avere due tipi di ritorno?
Qual è il tipo di ritorno di questo metodo? Perché sembra che abbiano due tipi di ritorno?
public <E extends Foo> List<E> getResult(String s);
dove Foo
è la mia classe.Perché questo metodo Java sembra avere due tipi di ritorno?
Qual è il tipo di ritorno di questo metodo? Perché sembra che abbiano due tipi di ritorno?
No, non hai due tipi di ritorno. È un generic method che stai vedendo.
<E extends Foo> --> you are declaring a generic type for your method
List<E> --> this is your return type
Il vostro metodo può avere un tipo generico E
che è una sottoclasse di Foo
. il tuo tipo di reso è un List<Foo or any SubType Of FOO>
Il tipo di reso è List<E>
. La clausola <E extends Foo>
non è un tipo di reso; è una dichiarazione di tipo generico, che specifica che il particolare tipo E
deve essere un Foo
(o una sottoclasse di Foo
). Questa è la sintassi standard per la dichiarazione di un metodo generico.
'E' può essere una classe figlia di' Foo'. –
Dai un'occhiata al Java documentation relativo ai generici.
<E extends Foo> // declares the bounds for the generic type `E`
List<E> // declares the return value
Il tipo di ritorno del metodo è List<E>
.
Restituirà un 'Elenco '. –
@LuiggiMendoza '?' È specificato dal chiamante. Il metodo stesso non ha scelta. Tutto ciò che può legittimamente restituire è un 'List' vuoto, un' List' di 'null's,' null' o genera un'eccezione/non ritorno. –