2010-02-07 8 views
5

Ho visto a volte un oggetto di tipo all'interno di <> accanto a un'altra dichiarazione del tipo di oggetto. Per esempio:In Java, cosa significa quando un tipo è seguito da parentesi angolari (come nell'Elenco <Foo>)?

NavigableMap<Double, Integer> colorMap = new TreeMap<Double, Integer>() 
or 
private final CopyOnWriteArrayList<EventListener> ListenerRecords = 
new CopyOnWriteArrayList<EventListener>(); 

Potreste darmi una spiegazione facile?

+0

Grazie mille a tutti! Sto bene ora;) e anche grazie per modificare il titolo in modo corretto !! Cordiali saluti – soneangel

risposta

1

Sono Generics, le classi che sono scritti con uno o più tipi sinistra da precisare in seguito, in modo che può essere utilizzato con qualsiasi tipo. I generici possono essere molto utili per contenitori o algoritmi, in cui l'algoritmo o la struttura dati utilizzata è indipendente dal tipo effettivo memorizzato o manipolato.

2

Si chiamano Generics e consentono al compilatore di eseguire il controllo del tipo di contenuto di elenchi, ecc., E inoltre riduce la quantità di fusioni da eseguire nel codice.

È utile anche durante la lettura del codice, in quanto è possibile sapere quale tipo di oggetto può essere inserito nell'elemento in questione o quale tipo deve aspettarsi da esso.

L'implementazione di Java non è completa quanto C++, poiché Java è disponibile solo in fase di compilazione.

In fase di runtime, le informazioni sul tipo non sono più disponibili.

2

Nell'esempio TreeMap la chiave della TreeMap ha tipo Double e il valore a cui fa riferimento questa chiave ha il tipo Intero. E come già risposto si chiama generici. Questa è un'estensione introdotta in java 1.5. Questo rende il codice più leggibile

3

Come altri hanno già detto: Si tratta di Java Generics. Sono in Java dall'SDK 1.5.

es:

new CopyOnWriteArrayList<EventListener>() 

significa che si sta creando un nuovo ArrayList (concomitante) che è in grado di memorizzare oggetti di tipo EventListener. Se si desidera creare un ArrayList il vecchio (Java 1.5 pre) così come:

new ArrayList() 

Tutti contenute oggetti sarebbero di tipo di oggetto e che avrebbe dovuto gettarli al loro tipo reale. Vedi anche http://en.wikipedia.org/wiki/Generics_in_Java#Motivation_for_generics.

+0

Molto gentile! Spiegazione molto semplice! – soneangel

Problemi correlati