Uso de Java Generics (I)

Documentos relacionados
Java 8 FlatMap y Streams

Java Interfaces y el concepto de simplicidad

Java Optional ifpresent y como utilizarlo

Práctica 11f. Práctica 11f. José M. Ordax

Entiendo los métodos de Java equals y hashcode

Práctica No. 5. Estructuras con Memoria Dinámica

Clases abstractas e interfaces en Java

Manejo de archivos de acceso directo en Java.

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

Java Herencia vs Interfaces

Utilizando un JPA Stream con JPA 2.2

Java interface y extensibilidad

Ejercicio 1 (proyecto prlistas, paquete listas)

Java Static Method y como usarlo correctamente

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

El concepto Java Reflection y como utilizarlo

Examen Teórico Convocatoria de Junio de 2012

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas :

Java Constructores por defecto. Java Constructores this() y super()

Instituto Tecnológico de Zacatecas. Departamento de Sistemas y Computación. Licenciatura en Informática. Organización de Datos

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE ITERABLE DEL API DE JAVA Y MÉTODO ITERATOR. RECORRER COLECCIONES DE OBJETOS (CU00915C)

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

Estructuras de control selectivas

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

TIPO Y MÉTODO ITERATOR. ERROR JAVA.UTIL.CONCURRENT MODIFICATIONEXCEPTION. RESUMEN DE TIPOS DE BUCLES EN JAVA. (CU00667B)

Programación II Tipos Abstractos de Datos(TAD)

18. Interfaces Declaración de una interfaz

PROGRAMACIÓN GENÉRICA

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Fundamentos de Programación

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)

Ahora bien puede estar el fichero persistence.xml en algún otro sitio?

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte)

Java Singleton. Ejemplo de Java Singleton (Patrones y ClassLoaders)

AGRUPANDO OBJETOS (Parte-I)

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM

Examen Teórico. Convocatoria de Febrero de 2015

Tema 4- Representación Enlazada

Ejercicio 3 Proyecto Intérprete Curso de Spring Framework

LISTAS CIRCULARES. // Métodos private CElemento() {} // constructor. ultimo

LABORATORIO PROGRAMACIÓN JAVA SESIÓN 5-1: POO BÁSICO EN JAVA

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Práctica 11d. Práctica 11d. José M. Ordax

Práctica 11e. Práctica 11e. José M. Ordax

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

Programación II 2do cuatrimestre 2017

Construcciones del Lenguaje Java

Guía práctica de estudio 07: Herencia

INSTITUTO TECNOLOGICO DE VILLAHERMOSA

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C)

// Método Comunicarse, sera implementado por las clases concretas que hereden de la clase //animal

INTRODUCCION A LA PROGRAMACION EN JAVA

Vamos a ver un ejemplo y profundizar un poco en su funcionamiento. Para ello vamos a definir las dependencias del proyecto vía Maven:

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Práctica 11c. Práctica 11c. José M. Ordax

Soluciones Kata TDD. Solución requisito 1

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

III. Desarrollo de aplicaciones con manejo de datos en la memoria Reuven Feuerstein Javier Navarro

Spring Boot. Qué es Spring Boot?

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Definición. Mónica E. García García Feb 07

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

Bloque II. Elementos del lenguaje de programación Java

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

PRIMER EXAMEN PARCIAL. 5 de febrero de SOLUCIONES

Java Generic Repository y JPA

Programación orientada a objetos

Práctica No. 2. Tipos de Datos y Entrada/Salida Estándar

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Sesión 5. TEMA 7 ESTRUCTURAS DE ALMACENAMIENTO Y AGRUPACIÓN DE OBJETOS

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

Soluciones Ejercicios Tema 3

Práctica No. 4. Operaciones Básicas con Hibernate Selección

PROGRAMACIÓN ORIENTADA A OBJETOS

c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. 0,5 punto

Transcripción:

Uno de los temas que mas quebraderos de cabeza da a los desarrolladores es la construcción Java Generics o simplemente clases Genéricas.Vamos a escribir algunos artículos hablando de este tema.para empezar con ello vamos a construir la clase Bolsa que es una clase sencilla que nos permitirá almacenar objetos de varios tipos.

Esta clase tendrá un límite de objetos a almacenar. Alcanzado el limite no se podrán añadir mas.vamos a ver su código fuente: package com.arquitecturajava; import java.util.arraylist; import java.util.iterator; public class Bolsa implements Iterable{ private ArrayList lista= new ArrayList(); private int tope; public Bolsa(int tope) { super(); this.tope = tope; public void add(object objeto ) { if (lista.size()<=tope) { lista.add(objeto); else {

throw new RuntimeException("no caben mas"); public Iterator iterator() { return lista.iterator(); En nuestro caso vamos a disponer de dos clases con las cuales rellenar la bolsa. La clase Golosina y la clase Chocolatina. Vamos a ver su código fuente : package com.arquitecturajava; public class Chocolatina { private String marca; public String getmarca() {

return marca; public void setmarca(string marca) { this.marca = marca; public Chocolatina(String marca) { super(); this.marca = marca; package com.arquitecturajava; public class Golosina { private String nombre; public String getnombre() { return nombre; public void setnombre(string nombre) { this.nombre = nombre; public Golosina(String nombre) {

super(); this.nombre = nombre; Es momento de crear un sencillo programa que llene la Bolsa de Chocolatinas y Golosinas para luego recorrer los elementos que están en la bolsa y sacarlos por pantalla. package com.arquitecturajava; public class Principal { public static void main(string[] args) { Bolsa bolsa= new Bolsa(5); Chocolatina c= new Chocolatina("milka"); Chocolatina c1= new Chocolatina("milka"); Chocolatina c2= new Chocolatina("ferrero"); Golosina g1= new Golosina("gominola"); Golosina g2= new Golosina("chicle"); bolsa.add(c); bolsa.add(c1); bolsa.add(c2);

bolsa.add(g1); bolsa.add(g2); for (Object o :bolsa) { if( o instanceof Chocolatina) { Chocolatina chocolatina= (Chocolatina)o; System.out.println(chocolatina.getMarca()); else { Golosina golosina= (Golosina)o; System.out.println(golosina.getNombre()); El programa funcionará correctamente, pero nos podremos dar cuenta que resulta bastante poco amigable la estructura if /else en la cual se chequean cada uno de los tipos a la hora de presentarlo por pantalla. Java Generics Para solventar este problema podemos construir una clase Genérica.Este tipo de clase nos permitirá definir una Bolsa de un tipo concreto. Puede ser una bolsa de Golosinas o una bolsa de Chocolatinas pero NO de las dos cosas a la vez.esto en un principio puede parecer poco flexible pero si nos ponemos a pensar cuando programamos solemos imprimir una lista

de Facturas o una lista de Compras no una lista mixta. Así pues el enfoque parece razonable. Vamos a ver el código fuente y comentarlo: package com.arquitecturajava.genericos; import java.util.arraylist; import java.util.iterator; public class Bolsa<T> implements Iterable<T>{ private ArrayList<T> lista= new ArrayList<T>(); private int tope; public Bolsa(int tope) { super(); this.tope = tope; public void add(t objeto ) { if (lista.size()<=tope) { lista.add(objeto); else { throw new RuntimeException("no caben mas");

public Iterator<T> iterator() { return lista.iterator(); La clase es un poco peculiar ya que al no saber de entrada de que tipo va a ser la bolsa debemos declarar un tipo Genérico T a nivel de clase y que será repetido en cada uno de los métodos que lo usen. De esta manera cuando construyamos un objeto de esta clase será el momento de especificar el tipo de Bolsa que deseamos.en el siguiente ejemplo hemos elegido Chocolatina como tipo para la Bolsa. De esta manera la bolsa solo admitirá este tipo de objetos. package com.arquitecturajava.genericos;

import com.arquitecturajava.chocolatina; import com.arquitecturajava.golosina; public class Principal { public static void main(string[] args) { Bolsa<Chocolatina> bolsa= new Bolsa<Chocolatina>(); Chocolatina c= new Chocolatina("milka"); Chocolatina c1= new Chocolatina("milka"); Chocolatina c2= new Chocolatina("ferrero"); bolsa.add(c); bolsa.add(c1); bolsa.add(c2); for (Chocolatina chocolatina:bolsa) { System.out.println(chocolatina.getMarca()); Acabamos de construir nuestra primera clase Generica y hemos usado un bucle foreach para recorrerla de una forma sencilla. Otros artículos relacionados: String vs StringBuffer

Java Iterator vs ForEach Uso de Java Generics (I)