1
00:00:00,180 --> 00:00:00,840
Continuemos.

2
00:00:00,930 --> 00:00:06,570
Veamos otras variantes para obtener el valor del optional al final son otros métodos, pero podemos

3
00:00:06,570 --> 00:00:11,820
obtener el objeto en sí que está envuelto en este opcional y podemos hacer algo con él.

4
00:00:12,000 --> 00:00:12,480
Veamos.

5
00:00:12,540 --> 00:00:15,420
Pero no modificar este ejemplo lo voy a copiar y pegar.

6
00:00:15,630 --> 00:00:16,710
Entonces copiamos.

7
00:00:16,770 --> 00:00:19,770
Ejemplo Repositorio Vamos a utilizar el mismo ejemplo.

8
00:00:20,280 --> 00:00:24,240
Le vamos a llamar métodos or hells.

9
00:00:25,890 --> 00:00:26,270
Ok.

10
00:00:27,920 --> 00:00:34,310
Vamos a modificar, de hecho, ya podemos cerrar esta clase repositorio y cerramos computador, vamos

11
00:00:34,310 --> 00:00:36,380
cerrando y dejamos solamente este de acá.

12
00:00:37,450 --> 00:00:44,610
Vean esto acá que te he comentado, lo quitamos entonces, en vez de utilizar y presen or hells o utlizar

13
00:00:44,740 --> 00:00:47,380
Is presen con un if invocar el metodo get.

14
00:00:47,590 --> 00:00:52,800
Después vamos a hablar un poco más sobre metodo yeta, pero por ahora vamos a usar otro método.

15
00:00:52,990 --> 00:00:54,580
Por lo tanto lo vamos a quitar.

16
00:00:55,090 --> 00:00:58,360
Acá tenemos los or es más importante.

17
00:00:58,420 --> 00:01:02,800
Or else or el get or el fru or el fru.

18
00:01:03,190 --> 00:01:06,310
Pero el que recibe un suplir una presun blanda.

19
00:01:06,670 --> 00:01:07,960
Acá no. De hecho, acá.

20
00:01:07,960 --> 00:01:11,020
Después me voy a detener en el manejo de excepciones.

21
00:01:11,050 --> 00:01:17,110
Claro, porque estos métodos, cuando el objeto en NULL no está presente y lo queremos obtener, lanza

22
00:01:17,230 --> 00:01:21,940
una opción por defecto, como acá en No Sach Element Exception.

23
00:01:22,060 --> 00:01:27,220
Es decir, si no encuentra un elemento o el objeto lanzate acepcion muy parecido al nyet.

24
00:01:27,400 --> 00:01:30,010
El problema del get es que no lo dice este método.

25
00:01:30,010 --> 00:01:36,550
Si lo dice, si no lanza una acepción, entonces con el GET queda ambiguo, como que invita a invocar

26
00:01:36,550 --> 00:01:38,950
billet para obtener el objeto, pero si es nulo.

27
00:01:39,000 --> 00:01:45,460
Bueno, vamos a obtener una zamiento decepción y eso va en contra del principio del optional, que justamente

28
00:01:45,460 --> 00:01:49,200
es evitar el pulpo interseccion o algún nascimiento decepción.

29
00:01:49,270 --> 00:01:55,470
Entonces por eso siempre tengan presente que el GET se tiene que manejar en conjunto con el IS present.

30
00:01:55,600 --> 00:01:57,760
Si está presente, bueno, ahí invocamos el GET.

31
00:01:57,850 --> 00:02:00,400
Si no, no, porque si no lanza la excepción.

32
00:02:00,610 --> 00:02:04,900
Bien, después lo vamos a ver esto con ejemplos por ahora or else.

33
00:02:06,280 --> 00:02:13,080
Ya, pero él por él devuelve el objeto de qué tipo es computador, computador?

34
00:02:13,780 --> 00:02:15,070
PS Igual.

35
00:02:16,470 --> 00:02:16,960
Pero qué pasa?

36
00:02:16,990 --> 00:02:17,500
Por qué se llama?

37
00:02:17,740 --> 00:02:22,450
Es porque si no se encuentra, devuelve un objeto por defecto.

38
00:02:22,570 --> 00:02:27,190
Por ejemplo, si fuera del tipo string y no computador, devuelve un string por defecto.

39
00:02:27,880 --> 00:02:29,770
Ahora, claro, es del tipo computador.

40
00:02:29,890 --> 00:02:32,830
Entonces tienen que devolver un computador por defecto.

41
00:02:33,070 --> 00:02:36,820
Y acá simplemente se pasa por argumento este objeto por defecto.

42
00:02:36,910 --> 00:02:38,920
Esta instancia no es una prisión, lanta.

43
00:02:38,980 --> 00:02:42,100
Por lo tanto, simplemente creamos el objeto y lo pasamos por argumento.

44
00:02:42,250 --> 00:02:43,990
Lo podemos crear acá o afuera.

45
00:02:44,350 --> 00:02:45,880
Por ejemplo, por acá.

46
00:02:47,500 --> 00:02:49,940
Puta por defecto.

47
00:02:50,580 --> 00:03:03,700
Igual new computador nombre, por poner un ejemplo, un HP omen del modelo L'Eau cero cero cero uno

48
00:03:03,790 --> 00:03:05,740
cualquiera y listo.

49
00:03:05,980 --> 00:03:08,440
Entonces pasamos esta instancia de computador acá.

50
00:03:11,520 --> 00:03:12,360
Vamos a probar.

51
00:03:12,780 --> 00:03:17,970
Recuerden que el Roj o Rozz existen, por lo tanto debería retornar.

52
00:03:18,210 --> 00:03:21,150
Ah, perdón, falta imprimir acá un shout.

53
00:03:23,170 --> 00:03:25,390
PC Bien, vamos a imprimir.

54
00:03:28,220 --> 00:03:30,950
A sus Rozz se fijan, no cuenta, está bien.

55
00:03:31,040 --> 00:03:32,570
Si colocamos Rozz 2.

56
00:03:35,980 --> 00:03:43,210
HP omen el valor por defecto, entonces una variante del nyet, obviamente con otro nombre más explícito

57
00:03:43,330 --> 00:03:49,690
donde indique que obtiene el valor y si no pasamos uno por defecto or hells.

58
00:03:50,740 --> 00:03:58,420
Bien, veamos otro variante psé, igual repositorio puntúo filter.

59
00:03:59,470 --> 00:04:00,580
Vamos a buscar por Mac.

60
00:04:01,330 --> 00:04:03,310
Mac puco perfecto.

61
00:04:03,340 --> 00:04:05,830
Y acá punto or hells.

62
00:04:05,980 --> 00:04:08,320
Pero vamos a ver or es gheto.

63
00:04:08,890 --> 00:04:14,770
La diferencia que acá no se pasa a los sino se pasa una presión lanta que retorna un objeto.

64
00:04:14,950 --> 00:04:16,780
Por lo tanto del tipo su player.

65
00:04:16,990 --> 00:04:20,980
Recuerden que su player o proveedor no consume ningún argumento.

66
00:04:21,280 --> 00:04:25,240
Por lo tanto acá sin argumentos es vacío.

67
00:04:26,260 --> 00:04:31,960
Pero si devuelve un objeto en este caso del tipo del objeto por defecto.

68
00:04:32,140 --> 00:04:35,890
En este caso defecto o new computador HP omen.

69
00:04:36,640 --> 00:04:38,580
Pero acá vamos a crear el objeto dentro.

70
00:04:38,650 --> 00:04:40,630
Aunque también podríamos utilizar el defecto.

71
00:04:44,370 --> 00:04:49,140
Estamos usando esta instancia o la podemos crear acá mismo dentro de esta prisión Lanta.

72
00:04:49,710 --> 00:04:52,560
Entonces ahora Shout ps.

73
00:04:55,720 --> 00:04:56,320
Vamos a ver.

74
00:04:58,800 --> 00:05:06,570
En el primero imprime HP omen y está bien porque lo renombra, se fijan Rozz 2 no existe, por lo tanto

75
00:05:06,570 --> 00:05:13,410
retorna el defecto, mientras que MacBook existe y está bien, retorna el existente, el que encuentra

76
00:05:13,500 --> 00:05:15,360
en el repositorio y no el por defecto.

77
00:05:16,020 --> 00:05:23,910
Ahora si colocábamos Mac Puu, pero está bien no encontrar, pero si colocamos MacBook Pro 2 no debería

78
00:05:24,360 --> 00:05:26,130
yambos HP Omen.

79
00:05:26,730 --> 00:05:29,400
Bien, ahora vamos a ajustar un poco esta presión.

80
00:05:29,400 --> 00:05:31,620
Lanta Porque claro, se puede simplificar.

81
00:05:38,010 --> 00:05:43,500
Incluso por la simpleza como se está creando afuera, nos dice o nos recomienda que usemos or hells.

82
00:05:43,710 --> 00:05:45,880
Pero bueno, la verdad es que queremos utilizar el oro.

83
00:05:45,990 --> 00:05:46,650
El silleta.

84
00:05:47,590 --> 00:05:55,270
Entonces, para que sea distinto, crea la instancia dentro de la prisión lanta y no utilizar una ya

85
00:05:55,270 --> 00:05:58,900
existente, es decir, que se apropia de la expresión computador.

86
00:06:00,620 --> 00:06:01,430
Voy a copiar esto.

87
00:06:01,490 --> 00:06:02,810
Si para el ejemplo da lo mismo.

88
00:06:04,340 --> 00:06:05,720
Ahí se fijan.

89
00:06:06,020 --> 00:06:07,760
Creamos la instance y la devolvemos.

90
00:06:07,850 --> 00:06:08,900
El resultado es el mismo.

91
00:06:09,020 --> 00:06:10,300
Bien, muy parecido.

92
00:06:10,620 --> 00:06:13,040
Uno es con Epson Landau y el otro no..

93
00:06:13,250 --> 00:06:14,510
Entonces, cual sería la diferencia?

94
00:06:14,580 --> 00:06:17,940
Bueno, hay una diferencia que bien sutil, por decir lo menos.

95
00:06:18,050 --> 00:06:21,100
Y para poder demostrarla, vamos a hacer lo siguiente.

96
00:06:22,500 --> 00:06:24,810
Voy a crear un método estático, un public

97
00:06:28,410 --> 00:06:30,530
valor defecto.

98
00:06:32,310 --> 00:06:34,320
Bien, y acá vamos a devolver esto.

99
00:06:35,190 --> 00:06:39,160
Entonces voy a cortar o voy a copiar mejor return.

100
00:06:40,890 --> 00:06:41,150
Perdón.

101
00:06:41,250 --> 00:06:42,570
En vez de voy computador.

102
00:06:42,630 --> 00:06:45,200
Obviamente lo que estamos devolviendo acá el computador.

103
00:06:46,590 --> 00:06:50,400
Ese no es un método estático que devuelve computador o el valor por defecto.

104
00:06:50,700 --> 00:06:53,940
Y acá shout obteniendo valor por defecto.

105
00:06:58,650 --> 00:06:59,040
Listo.

106
00:06:59,970 --> 00:07:02,150
Ahora, en vez de utilizar todo acá.

107
00:07:02,640 --> 00:07:09,720
De hecho esto lo voy a comentar, lo comentamos y acá invocamos el método valor por defecto.

108
00:07:09,870 --> 00:07:12,630
Recuerden, el valor por defecto devuelve la instancia.

109
00:07:12,700 --> 00:07:13,770
Por lo tanto tiene perfecto.

110
00:07:15,180 --> 00:07:15,960
Y acá también.

111
00:07:18,740 --> 00:07:23,600
Se fijan en lo mismo, incluso acá lo podrían optimizar como referencia de método.

112
00:07:23,900 --> 00:07:24,850
Entonces hacemos un click.

113
00:07:27,600 --> 00:07:29,910
En nombre de la clase que tenemos acá.

114
00:07:29,980 --> 00:07:30,930
2 Punto, punto.

115
00:07:31,020 --> 00:07:31,560
El método.

116
00:07:33,170 --> 00:07:34,820
Listo ya, pero qué va a pasar?

117
00:07:35,210 --> 00:07:36,890
Acá no está presente, no está presente.

118
00:07:36,920 --> 00:07:37,670
Perfecto.

119
00:07:37,760 --> 00:07:39,050
Vamos a levantar.

120
00:07:39,710 --> 00:07:42,130
Obviamente devuelve esto Omen.

121
00:07:42,380 --> 00:07:46,730
Cierto que sería nuestro objeto por defecto, obteniendo por defecto perfecta.

122
00:07:46,790 --> 00:07:48,590
Y acá también para los dos casos.

123
00:07:48,740 --> 00:07:52,130
Pero qué pasa si encuentra el objeto Rozz?

124
00:07:52,280 --> 00:07:54,200
Y acá MacBook Pro?

125
00:07:54,380 --> 00:07:56,270
En ambos casos encuentra la fiesta.

126
00:07:56,510 --> 00:08:00,470
Supuestamente no debería llamar éste este método por defecto?

127
00:08:00,950 --> 00:08:01,520
Vamos a ver.

128
00:08:04,430 --> 00:08:10,940
Pero sorpresa en uno lo llama obteniendo ahora por defecto, de hecho, se invoca este método, crea

129
00:08:11,030 --> 00:08:12,500
la instancia y la devuelve.

130
00:08:13,040 --> 00:08:14,450
Eso sucede en el OR.

131
00:08:14,990 --> 00:08:16,640
Acá no acá.

132
00:08:17,030 --> 00:08:23,270
Entonces extrema una diferencia independiente en el or else si se encuentra o nos encuentra el objeto

133
00:08:23,450 --> 00:08:25,280
de manera va invocar este método.

134
00:08:25,490 --> 00:08:28,340
Por lo tanto, va a ocupar recursos, va a crear la instancia.

135
00:08:28,490 --> 00:08:34,610
Y lo más curioso es que el objeto por defecto se crea sí o sí siempre, esté presente o no esté presente.

136
00:08:34,850 --> 00:08:38,330
Entonces, finalmente se crea un objeto que es redundante, no lo vamos a utilizar.

137
00:08:38,540 --> 00:08:43,550
Y esto es un tema delicado, porque este ejemplo simple pero qué pasa si este método est$ por defecto?

138
00:08:43,550 --> 00:08:45,350
Lo vamos a buscar a la base авто?

139
00:08:45,560 --> 00:08:51,770
O peor todavía, nos conectamos a un servicio web utilizando API Red, por ejemplo, y queremos obtener

140
00:08:51,860 --> 00:08:55,010
este objeto por defecto desde otra aplicación de forma remota.

141
00:08:55,130 --> 00:09:00,730
También va a haber un consumo en tiempo en consumo, un recurso que no se utiliza a diferencia del or

142
00:09:00,830 --> 00:09:08,360
els guet, que no se lleva el método valor por defecto o nos invoca el ELS, por así decir, cuando

143
00:09:08,360 --> 00:09:12,590
el objeto exista está presente en fondo y esa es la diferencia uno con otro.

144
00:09:12,800 --> 00:09:18,710
Entonces podríamos resumir que el OR el silleta es mucho mejor que el else están optimizado.

145
00:09:18,830 --> 00:09:26,480
Nunca va a llamar al súbalo por defecto en caso de que te presente, no así el or else que si lo hace,

146
00:09:26,600 --> 00:09:29,600
es decir, si crea el objeto, pero si está presente ese objeto aquí.

147
00:09:29,750 --> 00:09:32,240
Por decir en el limbo no se utiliza.

148
00:09:32,420 --> 00:09:33,200
Es un poco extraño.

149
00:09:33,440 --> 00:09:35,120
Bueno, eso quería explicar esta clase.

150
00:09:35,180 --> 00:09:40,270
Continuamos la siguiente con los métodos el froot lanzar una excepción.

151
00:09:40,340 --> 00:09:41,060
Nos vemos.
