Anda di halaman 1dari 3

Resumen.

Clases Parametrizadas

Antes un repaso de parmetros En la declaracin de un mtodo public void haceAlgo(int a, float b) { } a y b se llaman parmetros formales, y estn ms que nada relacionados con la especificacin de los datos con los que trabajar el mtodo en tiempo de diseo. Cuando invocamos el mtodo, por ejemplo con: haceAlgo(1, 2.5f); 1 y 2.5f son los parmetros reales, que por supuesto tienen que coincidir en la llamada con los parmetros formales.

Clases Parametrizadas El uso de tipos parametrizados permite crear una clase que pueda operar con cualquier tipo de dato, pero este tipo no se especifica hasta que se instancie la clase. Por ello, la clase es genrica, de all su nombre. El parmetro es especificado en la instanciacin (parmetro de tipo formal). La definicin de una clase parametrizada tiene el siguiente aspecto: public class miClase<T> donde T es un tipo de dato variable. Luego, se referencia a T dentro de la clase haciendo referencia a un tipo especfico. Tambin es posible indicar ms de un argumento (tipo). public class miClase<T, E>

Por ejemplo, declaramos la clase Calculadora que puede operar con diferentes tipos de nmeros: flotantes, enteros, etc. Existe el tipo de datos Number, del cual heredan Float e Integer. Podemos especificar que la clase va a operar con un tipo de datos E que es un Number: en realidad un subtipo de l como por ejemplo Integer.

class Calculadora<E extends Number> { E numero1; E numero2; public E sumar(E num1){ Float resultadoFloat; Integer resultadoInteger; if(num1 instanceof Float) { resultadoFloat = num1.floatValue() + num1.floatValue(); return (E)resultadoFloat; } if(num1 instanceof Integer) { resultadoInteger = num1.intValue() + num1.intValue(); return (E)resultadoInteger; } return null; } }

(Con el operador instanceof podemos preguntar si un objeto es de un tipo determinado) Luego, en el programa principal podemos hacer uso de esta clase especificando en la instanciacin con qu tipo de datos vamos a operar. Para el ejemplo tenemos un objeto Calculadora c1 que operar con flotantes y un objeto Calculadora c2 que operar con enteros.

public class ClasesParametrizadas { public static void main(String[] args) { Calculadora<Float> c1 = new Calculadora(); Calculadora<Integer> c2 = new Calculadora(); System.out.println( c1.sumar( 1.0f ) ); System.out.println( c2.sumar( 4 ) ); } }

Anda mungkin juga menyukai