Continuemos.
Veamos otras variantes para obtener el valor del optional al final son otros métodos, pero podemos
obtener el objeto en sí que está envuelto en este opcional y podemos hacer algo con él.
Veamos.
Pero no modificar este ejemplo lo voy a copiar y pegar.
Entonces copiamos.
Ejemplo Repositorio Vamos a utilizar el mismo ejemplo.
Le vamos a llamar métodos or hells.
Ok.
Vamos a modificar, de hecho, ya podemos cerrar esta clase repositorio y cerramos computador, vamos
cerrando y dejamos solamente este de acá.
Vean esto acá que te he comentado, lo quitamos entonces, en vez de utilizar y presen or hells o utlizar
Is presen con un if invocar el metodo get.
Después vamos a hablar un poco más sobre metodo yeta, pero por ahora vamos a usar otro método.
Por lo tanto lo vamos a quitar.
Acá tenemos los or es más importante.
Or else or el get or el fru or el fru.
Pero el que recibe un suplir una presun blanda.
Acá no. De hecho, acá.
Después me voy a detener en el manejo de excepciones.
Claro, porque estos métodos, cuando el objeto en NULL no está presente y lo queremos obtener, lanza
una opción por defecto, como acá en No Sach Element Exception.
Es decir, si no encuentra un elemento o el objeto lanzate acepcion muy parecido al nyet.
El problema del get es que no lo dice este método.
Si lo dice, si no lanza una acepción, entonces con el GET queda ambiguo, como que invita a invocar
billet para obtener el objeto, pero si es nulo.
Bueno, vamos a obtener una zamiento decepción y eso va en contra del principio del optional, que justamente
es evitar el pulpo interseccion o algún nascimiento decepción.
Entonces por eso siempre tengan presente que el GET se tiene que manejar en conjunto con el IS present.
Si está presente, bueno, ahí invocamos el GET.
Si no, no, porque si no lanza la excepción.
Bien, después lo vamos a ver esto con ejemplos por ahora or else.
Ya, pero él por él devuelve el objeto de qué tipo es computador, computador?
PS Igual.
Pero qué pasa?
Por qué se llama?
Es porque si no se encuentra, devuelve un objeto por defecto.
Por ejemplo, si fuera del tipo string y no computador, devuelve un string por defecto.
Ahora, claro, es del tipo computador.
Entonces tienen que devolver un computador por defecto.
Y acá simplemente se pasa por argumento este objeto por defecto.
Esta instancia no es una prisión, lanta.
Por lo tanto, simplemente creamos el objeto y lo pasamos por argumento.
Lo podemos crear acá o afuera.
Por ejemplo, por acá.
Puta por defecto.
Igual new computador nombre, por poner un ejemplo, un HP omen del modelo L'Eau cero cero cero uno
cualquiera y listo.
Entonces pasamos esta instancia de computador acá.
Vamos a probar.
Recuerden que el Roj o Rozz existen, por lo tanto debería retornar.
Ah, perdón, falta imprimir acá un shout.
PC Bien, vamos a imprimir.
A sus Rozz se fijan, no cuenta, está bien.
Si colocamos Rozz 2.
HP omen el valor por defecto, entonces una variante del nyet, obviamente con otro nombre más explícito
donde indique que obtiene el valor y si no pasamos uno por defecto or hells.
Bien, veamos otro variante psé, igual repositorio puntúo filter.
Vamos a buscar por Mac.
Mac puco perfecto.
Y acá punto or hells.
Pero vamos a ver or es gheto.
La diferencia que acá no se pasa a los sino se pasa una presión lanta que retorna un objeto.
Por lo tanto del tipo su player.
Recuerden que su player o proveedor no consume ningún argumento.
Por lo tanto acá sin argumentos es vacío.
Pero si devuelve un objeto en este caso del tipo del objeto por defecto.
En este caso defecto o new computador HP omen.
Pero acá vamos a crear el objeto dentro.
Aunque también podríamos utilizar el defecto.
Estamos usando esta instancia o la podemos crear acá mismo dentro de esta prisión Lanta.
Entonces ahora Shout ps.
Vamos a ver.
En el primero imprime HP omen y está bien porque lo renombra, se fijan Rozz 2 no existe, por lo tanto
retorna el defecto, mientras que MacBook existe y está bien, retorna el existente, el que encuentra
en el repositorio y no el por defecto.
Ahora si colocábamos Mac Puu, pero está bien no encontrar, pero si colocamos MacBook Pro 2 no debería
yambos HP Omen.
Bien, ahora vamos a ajustar un poco esta presión.
Lanta Porque claro, se puede simplificar.
Incluso por la simpleza como se está creando afuera, nos dice o nos recomienda que usemos or hells.
Pero bueno, la verdad es que queremos utilizar el oro.
El silleta.
Entonces, para que sea distinto, crea la instancia dentro de la prisión lanta y no utilizar una ya
existente, es decir, que se apropia de la expresión computador.
Voy a copiar esto.
Si para el ejemplo da lo mismo.
Ahí se fijan.
Creamos la instance y la devolvemos.
El resultado es el mismo.
Bien, muy parecido.
Uno es con Epson Landau y el otro no..
Entonces, cual sería la diferencia?
Bueno, hay una diferencia que bien sutil, por decir lo menos.
Y para poder demostrarla, vamos a hacer lo siguiente.
Voy a crear un método estático, un public
valor defecto.
Bien, y acá vamos a devolver esto.
Entonces voy a cortar o voy a copiar mejor return.
Perdón.
En vez de voy computador.
Obviamente lo que estamos devolviendo acá el computador.
Ese no es un método estático que devuelve computador o el valor por defecto.
Y acá shout obteniendo valor por defecto.
Listo.
Ahora, en vez de utilizar todo acá.
De hecho esto lo voy a comentar, lo comentamos y acá invocamos el método valor por defecto.
Recuerden, el valor por defecto devuelve la instancia.
Por lo tanto tiene perfecto.
Y acá también.
Se fijan en lo mismo, incluso acá lo podrían optimizar como referencia de método.
Entonces hacemos un click.
En nombre de la clase que tenemos acá.
2 Punto, punto.
El método.
Listo ya, pero qué va a pasar?
Acá no está presente, no está presente.
Perfecto.
Vamos a levantar.
Obviamente devuelve esto Omen.
Cierto que sería nuestro objeto por defecto, obteniendo por defecto perfecta.
Y acá también para los dos casos.
Pero qué pasa si encuentra el objeto Rozz?
Y acá MacBook Pro?
En ambos casos encuentra la fiesta.
Supuestamente no debería llamar éste este método por defecto?
Vamos a ver.
Pero sorpresa en uno lo llama obteniendo ahora por defecto, de hecho, se invoca este método, crea
la instancia y la devuelve.
Eso sucede en el OR.
Acá no acá.
Entonces extrema una diferencia independiente en el or else si se encuentra o nos encuentra el objeto
de manera va invocar este método.
Por lo tanto, va a ocupar recursos, va a crear la instancia.
Y lo más curioso es que el objeto por defecto se crea sí o sí siempre, esté presente o no esté presente.
Entonces, finalmente se crea un objeto que es redundante, no lo vamos a utilizar.
Y esto es un tema delicado, porque este ejemplo simple pero qué pasa si este método est$ por defecto?
Lo vamos a buscar a la base авто?
O peor todavía, nos conectamos a un servicio web utilizando API Red, por ejemplo, y queremos obtener
este objeto por defecto desde otra aplicación de forma remota.
También va a haber un consumo en tiempo en consumo, un recurso que no se utiliza a diferencia del or
els guet, que no se lleva el método valor por defecto o nos invoca el ELS, por así decir, cuando
el objeto exista está presente en fondo y esa es la diferencia uno con otro.
Entonces podríamos resumir que el OR el silleta es mucho mejor que el else están optimizado.
Nunca va a llamar al súbalo por defecto en caso de que te presente, no así el or else que si lo hace,
es decir, si crea el objeto, pero si está presente ese objeto aquí.
Por decir en el limbo no se utiliza.
Es un poco extraño.
Bueno, eso quería explicar esta clase.
Continuamos la siguiente con los métodos el froot lanzar una excepción.
Nos vemos.