Continuamos.
Pero primero vamos a arreglar un error que cometí la clase anterior.
La verdad es que no me di cuenta, pero si nos vamos a camión en el IF.
Pero en vez colocar menor, puse mayor.
Por alguna razón acá, entonces en vez de mayor tiene que ser al revés.
De hecho, cree que lo dije?
Creo que dije que tenía el menor, pero por alguna razón.
Bueno, dije menor, propuse mayor.
En fin, un error yeta.
Así que si, claro, porque tiene que ser menor.
Es decir, mientras sea menor que el máximo, mientras no llegue al límite, podemos ir agregando eventos.
Así que está bien.
De lo contrario lanzamos la excepción.
Pero cuál sería el siguiente paso?
Bueno, vamos a crear la clase con el método Main.
Nuestra clase ejemplo.
Entonces acá en generic class por acá nuestra clase de ejemplo.
Ejemplo genericos ok.
Listo.
Método Main.
Y comenzamos.
Bueno, tenemos que crear la instancia camión, entonces camión, transporte o camión igual new camión.
Ya por constructor tenemos que pasar el límite, es decir, cuántos elementos, por ejemplo, vamos
a colocar unos cinco, cinco elementos y este transporte va a ser, por ejemplo, de caballos de animales.
12 transporte, caballos.
Vamos a agregar caballos entonces?
Entonces transporte caballos.
Punto A. Se fijan maneja el tipo más genérico ese de la clase padre que sería objeto la clase padre
crean todos los objetos se fijan y bueno, nos va a obligar a realizar el gasto, claro, porque lo
guardamos de un tipo genérico y después los obtenemos del tipo документы, del tipo genérico, entonces
entremetido.
Después volver a convertir, por ejemplo, el caballo de objeto al tipo caballo.
Y así lo mismo con automóvil, con maquinaria.
Se fijan y no estamos utilizando todo el potencial de los tipos en yaba de los generics.
Pero lo importante primero hacerlo de esta forma para visualizar la ventaja.
Entonces agregamos new animal.
Bien, el animal recibía el nombre, el animal y el tipo el nombre bueno, un nombre cualquiera que
le quiera dar a su animal.
Por ejemplo, un caballo se podría llamar peregrino.
Y el tipo caballo lo puso el tipo String para simplificar, pero también podría ser una clase, una
clase hija, por ejemplo, que herede de animal una alternativa o mejor un numerador, un enum, seleccionar
los tipo animales, por ejemplo caballo, ovejas, vacas, en fin, transportar cualquier tipo de animal.
Claro, también podríamos dejar nuestra clase animal mucho más robusta, no solamente con el nombre,
con el tipo, sino también con la familia, con la especie.
Por ejemplo, el caballo es de la familia de los seguidos, pero también es un mamífero.
Entonces, claro, se puede, pueden ser mucho más.
Pero nuestra idea no es eso, sino más bien ver el tema de los genéricos.
Entonces también transporte, punto add new animal y también otro caballo, claro.
Podemos mezclar diferentes tipos animales, pero por lo general cuando se transporta algo siempre es
del mismo tipo transportamos caballos o porcinos o vacas, y lo mismo cuando transportamos automóviles
o solamente un tipo automóvil.
No es que estemos transportando automóviles por un lado o maquinaria por otro.
Todo en el mismo camión.
No, por general no hace por lo general siempre daymo tipo.
Por eso vamos a implementar nuestro ejemplo con un camión para cada tipo de cosa que queramos transportar.
Entonces, en este caso caballos, solamente caballos.
Grillo, otro caballo se fija en caballo.
Entonces, de repente.
Por eso es mucho mejor usar un enum.
Porque no pudieron equivocar.
Por ejemplo, acá colocar caballo, acá caballo es distinto.
Mientras que con un en un qué mucho más estricto en nombre del caballo mucho más centralizado también
y parametrizar los nombre.
Pero bueno, para el ejemplo de tal forma.
Transporte junto a
otro caballo, Tonkin.
Por ejemplo, tovo Kalma.
Ya llevamos cuatro.
El último.
A New Animal.
Y cualquier nombre, por ejemplo, el lonco toma.
Ahí tenemos el transporte.
Ahora quiero iterar y mostrar el nombre de Toqueis.
Entonces, por ejemplo, Dunford, se fijan de qué tipo es?
Revisemos.
Acá en el iterador, bueno, acá retornan y teratoma se fijan, acá podemos iterar, pero lo que contiene
este iterador son objetos del tipo genético, del tipo objeto.
Por ejemplo, si quisiera colocar, por ejemplo, caballos o animal, en realidad animal a de animal
o C de caballo de lo mismo, acá simplemente transporte, claro, porque recuerden que puedo iterar
es dable camión porque implementa la interfaz, pero que me marca un error.
Se fijan porque requiere el tipo Hoggett y prohibiÃ en un tipo animal.
Entonces no puedo utilizar se fijan, no puedo utilizar un animal si por dentro está utilizando y manejando
esto de forma genérica con el tipo Hoggett.
Bueno, acá un paréntesis por utilizar tipo object, es decir, de hecho en la clase camión por utilizar
un tipo Hoggett o bien podría haber utilizado una clase padre, por ejemplo, que reúna a todos los
tipos de objeto en una jerarquía animales, automóviles, camión se fijen, pero no la idea, porque
en realidad son distinto tipo un animal, no tienen un automóvil ni tampoco con maquinaria.
Entonces por eso mejor utilizar ответы, o sea, que todos se relacionen mediante una interfaz, es
decir, que todos sean transportable y tener la interfaz transportable independiente si tiene o no métodos,
quizá puede ser una interfaz solamente para el tipo.
Se fijan, entonces acá podría ser transportable y toda esta clase implementan transportable.
Pero bien para el ejemplo esto lo mismo utilizamos object.
Acá estamos obligados a ser el cast, por ejemplo Shout.
Bueno, ya sabemos que es objeto, no puede ser del tipo animal, pero si quieren imprimir, por ejemplo
a punto guet, no tengo los métodos, no tengo un método, por ejemplo del animal, el tipo, el nombre
no lo puedo mostrar salvo que haga el cast.
Entonces tendría que hacer el cast.
Lo podríamos hacer acá, por ejemplo, animal, voy hacer un cambio.
Acabo de colocar o de object yaca a de animal sé cacería a igual el cast animal del ответы s ahora que
hice el cast doggett animal, ahora sí que tengo la inquietud nombre.
No es cierto.
Y el tipo?
A este quesí.
Tengo peregrino, tipo caballo, grillo y así con cada uno.
Se fijan bueno, y también podría crear implementaciones objetos.
Un camión también para transportar automóviles y maquinaria.
Veamos el ejemplo.
Otro camión vamos a transportar maquinaria entonces trans máquinas igual new camión solamente 3 por
ejemplo, este camión solamente puede transportar 3 maquinaria pesada, entonces cada trans maquinarias
máquinas punto add new maquinaria del tipo string un solo atributo se acuerdan?
Por ejemplo un bulldozer.
Una grúa horquilla.
Uno más.
Trans juntoa new.
Una perforadora?
Listo.
Y también algo muy parecido con el Ford objeto o de qué genérico tras máquinas a cacería maquinaria
M Igual hacemos el cast de maquinaria de.
M?
Punto.
Qué tipo Gilito?
Vamos a imprimir.
Te fijan Eita?
Y lo mismo con automóvil.
Otro camión trans.
Auto igual new camión.
También 3 entonces, tras auto puntuar automóvil Toyota.
Humet Subite.
Un Chevrolet y lo mismo un Ford octeto.
Automóvil a?
Ya hacemos el casting.
Se fijan, no obliga a ser casto.
Queda poco flexible y también con mucha posibilidad de derrota.
Por qué no podrían equivocar?
Y en vez de colocar, por ejemplo, automóvil animal, se fijan?
Y acá también.
Animal.
Se fijan, entonces lo permite, permite hacer la serie un error y podrían utilizar el nombre jetivo
pensando que se trata de un automóvil.
En fin.
Entonces, por eso es mucho mejor utilizar genéricos.
Voy a probar acá.
Va a funcionar bien.
Ahí están los tres.
Ya tenemos un camión o distintos camiones para transportar distintas cosas.
Entonces la idea es emigrar esto a tipos genéricos.
Y para finalizar y repasar, recuerden que acá estamos y dando el objeto mismo, el objeto camión y
camión no es una lista, no es un ArrayList, no es un list@, no es un arreglo.
Se fijan, pero se puede iterar.
Y es justamente porque implementa la interfaz y terabyte, una de las características del API colección
de Java.
También hay explicado que el tipo list.
Un list también es literal.
Implemente este interfaz, pero bien a partir de la siguiente clase.
Vamos a modificar esto para que sea 100 porciento genérico y no tener que hacer los cast sea mucho más
flexible, mucho más dinámico y con menos posibilidad de error.
Nos vemos.