Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los mtodos genricos y clases genricas permiten a los programadores especificar, con la declaracin de
un solo mtodo, un conjunto de mtodos relacionados o, con la declaracin de una sola clase , un conjunto
de tipos relacionados, respectivamente.
Mtodos Genricos
Todas las declaraciones de mtodos genricos tienen una seccin de parmetros de tipos, delimitadas por
signos que se anteponen al tipo de valor de retorno del mtodo. Cada seccin de parmetro de tipo
contiene uno o ms parmetros de tipo (tambin llamados parmetros de tipo formal), separados por
comas. Un parmetro de tipo conocido tambin como variable de tipo, es un identificador que especifica el
nombre de un tipo genrico. Los parmetros de tipo se pueden utilizar para declarar el tipo de valor de
retorno.
// Uso de mtodos genricos para imprimir arreglos de distintos tipos.
public class PruebaMetodoGenerico
{
// mtodo genrico imprimirArreglo
public static < E > void imprimirArreglo( E[] arregloEntrada )
{
// muestra los elementos del arreglo
for ( E elemento : arregloEntrada )
System.out.printf( "%s ", elemento );
System.out.println();
} // fin del mtodo imprimirArreglo
public static void main( String args[] )
{
// crea arreglos de objetos Integer, Double y Character
Integer[] arregloInteger = { 1, 2, 3, 4, 5, 6 };
Double[] arregloDouble = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };
Character[] arregloCharacter = { 'H', 'O', 'L', 'A' };
System.out.println( "El arreglo arregloInteger contiene:" );
imprimirArreglo( arregloInteger ); // pasa un arreglo Integer
System.out.println( "\nEl arreglo arregloDouble contiene:" );
imprimirArreglo( arregloDouble ); // pasa un arreglo Double
System.out.println( "\nEl arreglo arregloCharacter contiene:" );
imprimirArreglo( arregloCharacter ); // pasa un arreglo Character
} // fin de main
} // fin de la clase PruebaMetodoGenerico
Se puede obtener lo mismo con Object. Un mtodo genrico es importante cuando utiliza un parmetro de
tipo como el tipo de valor de retorno del mtodo.
Clases Genricas
Proporcionan medios para describir el concepto de una clase en forma independiente de su tipo. As
podemos crear instancias de objetos con tipos especiales de clase genrica. Estas clases se conocen como
clases parametrizadas o tipos parametrizados.
Archivo ExcepcionPilaLlena.java
// Indica que una pila est llena.
public class ExcepcionPilaLlena extends RuntimeException
{
// constructor sin argumentos
public ExcepcionPilaLlena()
{
this( "La Pila esta llena" );
} // fin del constructor de ExcepcionPilaLlena sin argumentos
// constructor con un argumento
public ExcepcionPilaLlena( String excepcion )
{
super( excepcion );
} // fin del constructor de ExcepcionPilaLlena sin argumentos
} // fin de la clase ExcepcionPilaLlena
Archivo ExcepcionPilaVacia.java
public class ExcepcionPilaVacia extends RuntimeException
{
// constructor sin argumentos
public ExcepcionPilaVacia()
{
this( "La Pila esta vacia" );
} // fin del constructor de ExcepcionPilaVacia sin argumentos
// constructor con un argumento
public ExcepcionPilaVacia( String excepcion )
{
super( excepcion );
} // fin del constructor de ExcepcionPilaVacia con un argumento
}
Archivo Pila.java
// La clase genrica Pila.
public class Pila< E >
{
private final int tamanio; // nmero de elementos en la pila
private int superior; // ubicacin del elemento superior
private E[] elementos; // arreglo que almacena los elementos de la pila
{
// mete elementos a la pila
try
{
System.out.printf( "\nMetiendo elementos a %s\n", nombre );
// mete elementos a la Pila
for ( T elemento : elementos )
{
System.out.printf( "%s ", elemento );
pila.push( elemento ); // mete elemento a la pila
}
} // fin de try
catch ( ExcepcionPilaLlena excepcionPilaLlena )
{
System.out.println();
excepcionPilaLlena.printStackTrace();
} // fin de catch ExcepcionPilaLlena
} // fin del mtodo probarPush
// el mtodo genrico probarPop saca elementos de una Pila
public < T > void probarPop( String nombre, Pila< T > pila )
{
// saca elementos de la pila
try
{
System.out.printf( "\nSacando elementos de %s\n", nombre );
T valorASacar; // almacena el elemento eliminado de la pila
// elimina todos los elementos de la Pila
while ( true )
{
valorASacar = pila.pop(); // saca de la pila
System.out.printf( "%s ", valorASacar );
} // fin de while
} // fin de try
catch( ExcepcionPilaVacia excepcionPilaVacia )
{
System.out.println();
excepcionPilaVacia.printStackTrace();
} // fin de catch ExcepcionPilaVacia
} // fin del mtodo probarPop
public static void main( String args[] )
{
PruebaPila2 aplicacion = new PruebaPila2();
aplicacion.probarPilas();
} // fin de main
} // fin de la clase PruebaPila2