Me continuemos porque en la clase anterior se me olvidó ver un detalle.
Sí, también es bueno que lo conozcan.
Bueno, esta implementación con el extends number o está en cliente, por ejemplo, voy a tomar este
acá con los clientes, lo voy a copiar y lo voy a pegar acá, acá, justamente arriba.
Perfecto.
Lo pego bien.
Voy a tratar de implementar una sobrecarga, pero en realidad sería exactamente lo mismo.
Sería otra forma de implementar una misma firma de método.
Qué pasa?
Bueno, si quito el genérico, simplemente lo eliminamos.
Voy a quitar esto.
Solamente dejamos al ratón, pero el tipo cliente, entonces cliente.
Y por supuesto, acá recibe clientes.
Un arreglo cliente, un arreglo cliente perfecto marca un error, sino que este método no lo tenemos
definido, pero sería muy equivalente hasta acá, ya que acá solamente puede recibir por argumento y
manejar tipos que sean cliente o subtipos y acá también.
Independiente simplemente o no, la interfaz, compárala de hecho, solamente por ahora no es necesario
que lo hagan, pero por ahora voy a quitar el comparable y el ant.
Estos dos son equivalentes.
De hecho, este de acá, cuando se compila por debajo en boycott, queda como éste.
Queda exactamente igual.
Una equivalencia por detrás de escena se genera este método se fijen.
Entonces este método ya está implementado, tiene la misma firma que este de acá.
De hecho, si lo comentamos.
Se fijan, desaparece el error.
Ahora, claro, acá acepta cliente un arreglo cliente.
Qué estaba pasando?
Un arreglo del tipo cliente premium se provee en el argumento quién te premio, que está perfecto porque
es un tipo de cliente.
Pero el problema es que acá está retornando un tipo genérico, un list@ de cliente y no una clase hija.
Entonces acá para que funcione, simplemente tendremos que quitar esto.
Es decir, pasa un cliente pre-mio, que es un tipo de cliente, pero lo que devuelve es un tipo más
genérico, una lista cliente, ya que este es el tipo que devuelve este método y no un cliente premium.
Pero bueno, se fijan.
El tema es que ambos métodos son muy parecidos.
Bueno, esto acá lo deja como estaba con cliente premium independiente.
El error, porque al final vamos a dejar este.
Este también tiene la ventaja de que lo que devuelva el tipo de dato puede ser no solamente un cliente,
sino también un tipo hijo.
Se fijan?
Ya Yassin, pero equivalente.
De hecho, no se puede sobrecargar.
Bien, veamos otro ejemplo relacionado a lo genérico o genérico que se le conoce como comodin o wild
card.
Bueno, los comodines solamente se pueden utilizar en listas, por ejemplo, del tipo list.
Bueno, mejor veamos un ejemplo.
Vamos a tener un método por acá public estático.
Bien, voy.
Por qué solamente va a imprimir un dato nada más?
No retorna nada.
Y el método se va a llamar imprimir clientes.
Y qué va a recibir?
Una lista?
Un list de clientes.
Clientes entonces?
Clientes.
Punto.
For each cesta en punto out.
Y el primer perfecto.
Ok, entonces acaso acepta cliente una lista de clientes, nada más.
Entonces vamos a ver.
Imprimir clientes.
Íbamos a pasar una lista cliente, por ejemplo clientes tenemos clientes, recuerden que clientes es
el primero, un ArrayList de clientes está perfecto que tiene Andre Guzmán.
Se puede imprimir ningún problema, pero también quiere imprimir.
Por ejemplo, esta acá clientelista.
La conversión cliente listas también se pueden?
Claro, porque es un tipo de cliente.
Ahora quiero imprimir clientes, pero quiero imprimir los premio clientes.
Premio y no puedo.
Porque claro, es una lista de tipo de cliente, pero hijos no es el tipo cliente padre, sino es una
implementación de cliente.
Por lo tanto, no la acepta.
Es decir, acá no podemos imprimir cualquier tipo de cliente acá, ni su descendencia.
Solamente los clientes.
La clase cliente, pero no su descendencia.
Porque por ejemplo, bueno, un cliente premium es un tipo de cliente, está perfecto, pero la lista
de clientes premium no es su clase.
Es decir, no hereda de una lista de clientes.
Es decir, son cosa distinta.
Cliente premio es un tipo de cliente.
Si la idea de cliente, pero la lista no una lista de clientes premium no es hija de una lista de clientes
y por eso no es compatible decir por eso no se puede pasar una lista de clientes premium como si fuera
una lista de cliente.
Estamos trabajando con listas, no con el objeto de cliente.
Se fijan.
Hoy es distinto y eso hay que tener claro.
Una lista de una clase hija no es una subclase de una lista de una clase padres para nada.
Entonces, cómo lo podríamos hacer si quisiera que pasase por acá, se imprimiera cualquier tipo de
listas de cliente, ya sea un cliente o un cliente premium, es decir, su descendencia, también las
clases hijas de cliente.
Bueno, utilizando como ven y como acá colocamos en el list en el operador diamante, acá un signo pregunta
extends Jassi.
Se fijan?
Entonces acá podemos pasar cualquier tipo de cliente, ya sea cliente o cliente premium o cualquier
clase hija.
Y ahora sí que sí se puede imprimir cualquiera.
Clientes clientelista y cliente premium.
Listo, vamos a probar.
De Kalo tenemos clientes Andrés, clientes, listas, Lucy y en 3 y Premium Paco, nada más continuamos
en la siguiente clase.