2011-01-10 15 views
6

estoy trabajando a través de algunos ejemplos de código y luego esta aparecido:Java - ¿Qué se usa <y cuál es su nombre?

public abstract class RandomPool<T> extends Pool { 
    //Class... 
} 

¿Qué tiene <> utiliza? ¿Y por qué es solo T dentro de estos? Esto parece ser muy aleatorio para mí. Sin embargo, ¿cómo puedo usarlo en una perspectiva más larga de hacer programas?

¡Gracias y dígame si necesito agregar más detalles!

+0

¡Gracias por responder a todos! Leeré los documentos de Java Generics y me aseguraré de que entiendo todo; luego, aceptaré la respuesta más descriptiva en función de mi comprensión de los documentos. – Curtain

Respuesta

10

Ver Java Generics

T significa "Tipo"

+0

¿Es necesario ser simplemente T o puedo usar cualquier letra como lo desee? – Curtain

+2

Cualquier letra o palabra. Es solo un marcador. –

1

Esta es la forma de declarar el tipo de un genérico que acepte su clase. El ejemplo se presenta lee:

clase abstracta ObjectPool de tipo T se extiende piscina

3

Genéricos

T es un marcador de posición para lo que se utiliza el tipo en tiempo de ejecución. Por ejemplo, podría usar:

RandomPool<String> pool; 

T se referiría a String en ese caso.

Leer el Java Generics Tutorial

1

muy corto desc T es una variable compilador. con su código publicado, puede tener una Piscina al azar de cadenas, por ejemplo: RandomPool<String> una piscina al azar de Foos, eg: RandomPoo<Foo>, .... Casi cualquier cosa. enlace

lectura dom de Farr con esto en mente

3

Esa cosa se llama un parámetro tipo.

Básicamente, su clase RandomPool es una clase genérica. Tiene un parámetro de tipo para que pueda usar diferentes clases proporcionadas por la persona que llama. Ver colecciones de Java como List será mucho más claro.

Además, tenga en cuenta que T no es una palabra clave, puede asignar un nombre al parámetro de tipo de la manera que desee. Es solo una convención usar T like Type. Algunas colecciones usan E like Element.

1

Es la forma de Java (Generics) para implementar plantillas (en C++). T representa el tipo del elemento que desea usar para un objeto particular instanciado.

Usted puede entender fácilmente los genéricos examinado este ejemplo:

Hashmap <String, int> hm = new HashMap<String,int>(); 
hm.put("k1",1); 
hm.put("k2",2); 

Iterator it = hm.iterator(); 

while (it.hasNext()){ 
    String curr = it.next(); 
    int value = hm.get(curr); 
} 

Aquí, se puede entender que Hashmap tiene 2 tipos (tipos generales, se puede usar lo que quiera .. de los nativos a clases personalizadas, etc. etc.) ¡RandomPool, en el ejemplo que publicó, debe crearse una instancia con un tipo personalizado particular! Por lo tanto, cuando usted decide utilizarlo, debe escribir código de esta manera (es decir):

RandomPool<String> myR = new RandomPool<String>(); 
1

No hay nada lujoso acerca de este.Es solo la sintaxis de Java para el polimorfismo paramétrico de rango 1.

Cuestiones relacionadas