2013-03-07 14 views
9
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?

+1

Restituirà un 'Elenco '. –

+2

@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. –

risposta

19

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>

6

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.

+0

'E' può essere una classe figlia di' Foo'. –

3

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>.

Problemi correlati