Java – Generics (Italiano)

Pubblicità

Sarebbe bello se potessimo scrivere un unico metodo di ordinamento che possa ordinare gli elementi in un array Integer, un array String o un array di qualsiasi tipo che supporti l’ordinamento.

I metodi Java Generic e le classi generiche consentono ai programmatori di specificare, con una singola dichiarazione di metodo, un insieme di metodi correlati o con una singola dichiarazione di classe, un insieme di tipi correlati, rispettivamente.

I generici forniscono anche la sicurezza dei tipi in fase di compilazione che consente ai programmatori di rilevare tipi non validi in fase di compilazione.

Usando il concetto generico di Java, potremmo scrivere un metodo generico per ordinare un array di oggetti, quindi invoca il metodo generico con array Integer, array Double, array String e così via, per ordinare gli elementi dell’array.

Metodi generici

Puoi scrivere una singola dichiarazione di metodo generico che può essere ca pieno di argomenti di diverso tipo. In base ai tipi di argomenti passati al metodo generico, il compilatore gestisce ogni chiamata di metodo in modo appropriato. Di seguito sono riportate le regole per definire i metodi generici:

  • Tutte le dichiarazioni di metodi generici hanno una sezione di parametri di tipo delimitata da parentesi angolari (< e >) che precede il tipo di ritorno del metodo (< E > nell’esempio successivo ).

  • Ogni sezione di parametro di tipo contiene uno o più parametri di tipo separati da virgole. Un parametro di tipo, noto anche come variabile di tipo, è un identificatore che specifica un nome di tipo generico .

  • I parametri di tipo possono essere usati per dichiarare il tipo restituito e fungere da segnaposto per i tipi degli argomenti passati al metodo generico, che sono noti come argomenti di tipo effettivo.

  • Il corpo di un metodo generico è dichiarato come quello di qualsiasi altro metodo. Nota che i parametri di tipo possono rappresentare solo i tipi di riferimento, non i tipi primitivi (come int, double e char).

Esempio

L’esempio seguente illustra come può stampare un array di tipo diverso usando un unico metodo generico –

Questo produrrà il seguente risultato –

Output

Array integerArray contains:1 2 3 4 5 Array doubleArray contains:1.1 2.2 3.3 4.4 Array characterArray contains:H E L L O

Parametri di tipo limitati

A volte potresti voler limitare i tipi di tipi che possono essere passati a un parametro di tipo. Ad esempio, un metodo che opera sui numeri potrebbe desidera accettare solo istanze di Number o delle sue sottoclassi. Questo è ciò a cui servono i parametri di tipo limitato.

Per dichiarare un parametro di tipo limitato, elenca il nome del parametro di tipo, seguito dalla parola chiave extends, seguito da il suo limite superiore.

Esempio

L’esempio seguente illustra come extends sia usato in senso generale per significare “extends” (come nelle classi) o “implements” (come nelle interfacce) . Questo esempio è un metodo generico per restituire il più grande dei tre oggetti comparabili –

Questo produrrà il seguente risultato:

Output

Max of 3, 4 and 5 is 5Max of 6.6,8.8 and 7.7 is 8.8Max of pear, apple and orange is pear

Classi generiche

Una dichiarazione di classe generica ha l’aspetto di una dichiarazione di classe non generica, tranne per il fatto che il nome della classe è seguito da una sezione di parametro di tipo.

metodi, la sezione dei parametri di tipo di una classe generica può avere uno o più parametri di tipo separati da virgole. Queste classi sono note come classi parametrizzate o tipi parametrizzati perché accettano uno o più parametri.

Esempio

L’esempio seguente illustra come possiamo definire una classe generica –

Questo produrrà il seguente risultato:

Output

Integer Value :10String Value :Hello World
Pubblicità

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *