Ejemplo 02: Uso de clases genéricas en Java
Descripción del Problema
Eres un desarrollador de software que necesita crear una clase de lista personalizada en Java que pueda almacenar cualquier tipo de datos. Quieres utilizar clases genéricas para lograr esto, pero no estás seguro de cómo implementarlo correctamente.
Solución
Paso 1: Crear la clase genérica
Primero, creamos una clase genérica llamada MiLista que puede almacenar cualquier tipo de datos. Utilizamos el símbolo <T> para indicar que esta clase es genérica y puede aceptar cualquier tipo de dato.
public class MyList<T> {
private Object[] elements;
private int size;
public MyList() {
elements = new Object[10];
size = 0;
}
public void add(T element) {
if (size == elements.length) {
resize();
}
elements[size++] = element;
}
public T get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
return (T) elements[index];
}
public int size() {
return size;
}
private void resize() {
int newSize = elements.length * 2;
Object[] newElements = new Object[newSize];
System.arraycopy(elements, 0, newElements, 0, elements.length);
elements = newElements;
}
}
Diseccionamos el código:
- La clase
MyList<T>es una clase genérica que puede almacenar cualquier tipo de datos. - El constructor inicializa un array de objetos con una capacidad inicial de 10 y establece el tamaño en 0.
- El método
add(T element)agrega un elemento a la lista. Si el tamaño actual es igual a la capacidad del array, se llama al métodoresize()para aumentar la capacidad del array. - El método
get(int index)devuelve el elemento en la posición especificada. Si el índice es inválido, lanza una excepciónIndexOutOfBoundsException. - El método
size()devuelve el número de elementos actualmente almacenados en la lista. - El método
resize()duplica la capacidad del array cuando es necesario. - El uso de
Object[]para almacenar los elementos es una técnica común en la implementación de clases genéricas, ya que Java no permite la creación directa de arrays de tipos genéricos.
Paso 2: Usar la clase genérica
Ahora que tenemos nuestra clase genérica MyList, podemos usarla para almacenar diferentes tipos de datos. Aquí hay un ejemplo de cómo usar la clase MyList para almacenar enteros y cadenas:
void main() {
MyList<Integer> intList = new MyList<>();
intList.add(1);
intList.add(2);
intList.add(3);
IO.println("Integer List Size: " + intList.size());
IO.println("First Element: " + intList.get(0));
MyList<String> stringList = new MyList<>();
stringList.add("Hello");
stringList.add("World");
IO.println("String List Size: " + stringList.size());
IO.println("First Element: " + stringList.get(0));
}
En este ejemplo, creamos una instancia de MyList para almacenar enteros y otra para almacenar cadenas. Agregamos algunos elementos a cada lista y luego imprimimos el tamaño de la lista y el primer elemento de cada lista.
Conclusión
En este ejemplo, hemos demostrado cómo crear y utilizar una clase genérica en Java para almacenar diferentes tipos de datos. Las clases genéricas son una herramienta poderosa que permite a los desarrolladores escribir código más flexible y reutilizable. Al utilizar clases genéricas, puedes evitar la necesidad de escribir código duplicado para cada tipo de dato que deseas almacenar, lo que mejora la eficiencia y la mantenibilidad de tu código.
Ejemplo 1: Validando entradas con JOptionPane
En este ejemplo, se muestra cómo utilizar JOptionPane para validar entradas de usuario en un programa Java.
Ejemplo 03: Uso de Enum, Excepciones en Java
En este ejemplo, se muestra cómo utilizar enumeraciones (Enum) y manejo de excepciones en Java para crear un programa que maneje diferentes tipos de errores de manera eficiente.