Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Índice general:
Tema 3: Genericidad en Java 1. Definición y Ventajas de la Programación Genérica.
2. Clases Genéricas:
1. Definición y Uso.
2. Clases Genéricas Estándar: La Clase ArrayList
3. Restricción de Tipos Genéricos.
Germán Moltó
3. Métodos Genéricos:
Escuela Técnica Superior de Ingeniería Informática 1. Definición y Uso
Universidad Politécnica de Valencia 2. El Problema de la Ordenación.
3. El Interfaz Comparable.
1 2
• El método get puede lanzar IndexOutOfBoundsException (RuntimeException) • Error del compilador: “type parameter java.lang.String is not within
its bound”
9 10
Implementación de la Interfaz
Comparable Ejercicio: ¿Qué líneas producen error?
int compareTo(T o): 1. Figura f1 = new Circulo();
Devuelve < 0 si este objeto es menor que el objeto o. 2. Figura f2 = new Cuadrado();
Devuelve = 0 si este objeto es igual que el objeto o. 3. System.out.println(f1.compareTo(f2));
Devuelve > 0 si este objeto es mayor que el objeto o.
4. Object x = f1;
public abstract class Figura implements Comparable<Figura> {
...
5. System.out.println(x.compareTo(f1));
public int compareTo(Figura o){ 6. System.out.println( (Comparable) x.compareTo(f1));
double areaf = o.area();
double areathis = this.area();
7. System.out.println( ((Comparable) x).compareTo(f1));
if ( areathis < areaf ) return -1; 8. System.out.println( f2.compareTo(x) );
else if ( areathis > areaf ) return 1;
else return 0;
}
}
19 20
Ejercicios Propuestos de Programación
Los métodos equals y compareTo Genérica
Se recomienda que las definiciones de equals y Ejercicio 1. Diseñar la Clase Genérica Operaciones, en el
compareTo sean compatibles: paquete ordenacionArray del proyecto Bluej util de librerias,
(x.compareTo(y) == 0 ) x.equals(y) con la siguiente funcionalidad:
public int compareTo(Figura o){ Calcular el elemento mínimo de un array;
double areaF = o.area(), area = this.area(); Calcular el elemento máximo de un array;
if ( area < areaF ) return -1;
else
Buscar un Objeto en un array, devolviendo la posición de la
if (tipo.equals(f.tipo) && color.equals(f.color) && area==areaF) return 0; primera aparición del Objeto en el array o -1 si no existe.
else return 1; Además, diséñese una aplicación que use la Clase Operaciones
} para un array de Integer
Ejercicio 2. Añádase a la clase Operaciones un método
public boolean equals(Object x){ genérico que borre la primera aparición en el array de un
return ( this.compareTo( (Figura) x) == 0 ) ;
} objeto dado, devolviendo el objeto eliminado del array o
null si no se encuentra.
21 22