2010-02-07 9 views
5

Vi a veces un objeto tipo dentro de <> al lado de otra declaración de tipo de objeto. Por ejemplo:En Java, ¿qué significa cuando un tipo va seguido de corchetes angulares (como en la Lista <Foo>)?

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

¿Me podría dar una explicación fácil?

+0

¡Muchas gracias a todos! Estoy bien ahora;) y también gracias por editar el título de una manera correcta !! Saludos cordiales – soneangel

Respuesta

1

Son Generics, las clases que se escriben con uno o más tipos de izquierda a especificar más adelante, por lo que se puede utilizar con cualquier tipo. Los genéricos pueden ser muy útiles para contenedores o algoritmos, donde el algoritmo o la estructura de datos utilizada es independiente del tipo real almacenado o manipulado.

2

Se llaman genéricos y permiten que el compilador compruebe los contenidos de listas, etc., y también reduce la cantidad de fundición que tiene que hacer en su código.

También es útil al leer el código, ya que sabe qué tipo de objeto se puede poner en el elemento en cuestión, o qué tipo esperar de él.

La implementación de Java no es tan completa como C++, ya que Java solo está disponible en tiempo de compilación.

En tiempo de ejecución, la información del tipo ya no está disponible.

2

En su TreeMap de ejemplo, la clave de TreeMap tiene tipo Double y el valor al que hace referencia esta clave tiene el tipo Integer. Y como ya se respondió, se llama genéricos. Esta es una extensión introducida en Java 1.5. Esto hace que el código sea más legible

3

Como han dicho algunos otros anteriormente: Su trato con Java Generics. Están en Java desde SDK 1.5.

por ejemplo:

new CopyOnWriteArrayList<EventListener>() 

significa que va a crear un nuevo ArrayList (concurrente) que es capaz de almacenar objetos de tipo EventListener. Si desea crear un ArrayList la (pre 1.5 de Java) como la vieja manera:

new ArrayList() 

Todos los objetos contenidos serían del tipo de objeto y que habría que echarlos a su tipo real. Vea también http://en.wikipedia.org/wiki/Generics_in_Java#Motivation_for_generics.

+0

¡Muy amable! ¡Explicación muy fácil! – soneangel

Cuestiones relacionadas