1
00:00:00,540 --> 00:00:05,970
En esta clase vamos a hacer una pequeña mejora a nuestro código, específicamente en la clase Service

2
00:00:06,060 --> 00:00:08,880
Service implemente y también en la interfaz.

3
00:00:09,540 --> 00:00:15,390
Entonces la idea es modificar, obtener por Heidy o Macky, modificar e implementar otro método obtener

4
00:00:15,390 --> 00:00:23,280
predi, pero utilizando el API opcional opcional de Java 8 que nos facilita mucho traja con objeto podemos

5
00:00:23,340 --> 00:00:30,420
encapsular el objeto y dentro de este optional validar si el objeto existe, si distinto, null si está

6
00:00:30,420 --> 00:00:34,080
presente y manejar de forma simple caminos alternativo.

7
00:00:34,140 --> 00:00:41,370
Por ejemplo, en caso de que no venga, en caso de que se anul o no esté presente el objeto, retornamos

8
00:00:41,430 --> 00:00:42,120
una excepción.

9
00:00:42,180 --> 00:00:45,150
Es decir, lanzamos una excepción como otra forma.

10
00:00:45,240 --> 00:00:51,660
En vez de implementar el IF de una forma más elegante, usando espresion el lanta o función de flecha,

11
00:00:51,780 --> 00:00:53,970
en fin, características propias de ya 8.

12
00:00:54,240 --> 00:00:56,130
Entonces lo primero nos vamos a la interfaz.

13
00:00:56,670 --> 00:00:58,440
Vamos a copiar este método tal cual.

14
00:01:00,860 --> 00:01:02,930
Pero acá vamos a agregar optional,

15
00:01:06,680 --> 00:01:07,940
importamos optional.

16
00:01:08,930 --> 00:01:12,800
Bueno, es de yaba útil, es decir, es propio de Yaba, no tiene nada que ver.

17
00:01:12,800 --> 00:01:18,920
Sprit es solamente utilizar características propia de Yot, entonces como un grapar que anida el objeto

18
00:01:19,010 --> 00:01:24,860
o lo contiene y nos permite verificar si el objeto es distinto numro o si está presente.

19
00:01:24,950 --> 00:01:30,830
En fin, un montón de características y métodos vamos a importar y le vamos a cambiar el nombre a obtener

20
00:01:30,830 --> 00:01:35,650
por Heidy acá optional guardamos.

21
00:01:35,750 --> 00:01:39,110
Bueno, va a marcar un error acá en la clase que tenemos que implementar.

22
00:01:39,900 --> 00:01:44,690
Bueno, agreguemos este método perfecto y vamos a ir a buscar el objeto.

23
00:01:45,590 --> 00:01:50,420
Entonces, por ejemplo, copiamos esto tal cual lo pegamos acá.

24
00:01:51,320 --> 00:01:55,250
Usuario acá, usuario igual.

25
00:01:56,670 --> 00:02:00,840
Quitamos el interés, eso incluso con this.

26
00:02:00,900 --> 00:02:02,130
Pero bueno, es opcional.

27
00:02:03,360 --> 00:02:07,170
Entonces usamos o tener por allí de esta clase.

28
00:02:07,300 --> 00:02:08,460
Lo estamos reutilizando.

29
00:02:09,000 --> 00:02:13,380
Pasamos a la idea, obtenemos el usuario, pero el usuario puede ser el usuario del tipo usuario.

30
00:02:13,470 --> 00:02:15,480
O puede ser un objeto nulo.

31
00:02:15,930 --> 00:02:20,970
Y acá usando optional punto.

32
00:02:21,900 --> 00:02:23,240
Be nü lable.

33
00:02:24,790 --> 00:02:26,020
De acá pasamos el usuario.

34
00:02:27,250 --> 00:02:32,920
Ahora voy a explicar lo que hacemos es de forma estática invocar el método off.

35
00:02:33,160 --> 00:02:40,150
El método off lo que hace es convertir este objeto usuario que tenemos independientes en nulo o no lo

36
00:02:40,150 --> 00:02:42,790
convertimos en un tipo opcional options.

37
00:02:43,570 --> 00:02:51,100
Y tenemos dos métodos el método off acá el off y el off anularé le ofrece el off no acepta nulo.

38
00:02:51,370 --> 00:02:57,310
Entonces acá podríamos preguntar si igual a nulo lo pasamos como vacío y si no retornamos el optional

39
00:02:57,460 --> 00:02:58,810
off del objeto usuario.

40
00:02:58,900 --> 00:03:04,330
Pero esto mismo lo podemos hacer en un solo método, por ejemplo optional off nü lable.

41
00:03:06,200 --> 00:03:06,530
Qué hacer?

42
00:03:06,560 --> 00:03:08,900
Preguntar si el valor es nulo ya.

43
00:03:08,990 --> 00:03:14,930
Entonces, si el usuario nulo va a retornar un nocturnal empty, es decir, vacío, de lo contrario

44
00:03:14,930 --> 00:03:21,950
va a retornar un optional off, es decir, convierte el objeto usuario en un opcional.

45
00:03:22,130 --> 00:03:22,790
Ya bien.

46
00:03:24,040 --> 00:03:27,880
Entonces ya convertimos en un optional de usuario.

47
00:03:28,180 --> 00:03:28,900
Guardamos.

48
00:03:29,380 --> 00:03:32,350
Entonces ahora nos vamos al controlador por acá.

49
00:03:33,420 --> 00:03:35,040
Esto ya lo podemos comentar.

50
00:03:36,020 --> 00:03:36,800
Ya no es necesario.

51
00:03:37,130 --> 00:03:37,760
Por qué?

52
00:03:38,060 --> 00:03:38,810
Esto también.

53
00:03:40,880 --> 00:03:43,940
Entonces, ahora usuarios lo vamos a obtener de otra forma.

54
00:03:45,090 --> 00:03:48,660
Vamos a copiar, lo pegamos acá abajo.

55
00:03:50,460 --> 00:03:52,860
Pero el obtener.

56
00:03:54,180 --> 00:03:56,250
Bien, entonces cómo tengo al usuario?

57
00:03:57,090 --> 00:04:05,670
El objeto opcional 3 varios métodos obtener obtiene el usuario por ejemplo or else si no otro usuario

58
00:04:05,910 --> 00:04:09,510
ya sea null o puedo manejar un usuario por defecto.

59
00:04:09,510 --> 00:04:09,900
En fin.

60
00:04:10,770 --> 00:04:14,640
Diferentes opciones acá puedo manejar una versión lanta.

61
00:04:15,520 --> 00:04:19,700
Acá podemos lanzar una excepción o lanzar una excepción más personalizada.

62
00:04:19,840 --> 00:04:26,320
Entonces vamos a elegir por el thru lanzar una opción en caso de que sea vacío el objeto de que sea

63
00:04:26,410 --> 00:04:26,830
empty.

64
00:04:27,370 --> 00:04:33,010
Y acá dice retorna el objeto, que no es nulo el valor, en este caso el usuario, de lo contrario retorna

65
00:04:33,100 --> 00:04:37,540
una excepción por defecto no encuentra el elemento exception.

66
00:04:37,930 --> 00:04:43,020
Si el valor no está presente, nos hach element exception bien, pero la idea de lanzar nuestra propia

67
00:04:43,030 --> 00:04:44,740
sección de forma personalizada.

68
00:04:45,400 --> 00:04:47,620
Entonces vamos a seleccionar este acá.

69
00:04:50,160 --> 00:04:55,910
De acá una presión lauta, nuestra expresión landa o función de flecha no tiene argumento, entonces

70
00:04:55,920 --> 00:04:58,410
paréntesis vacío, una función de flecha.

71
00:04:58,680 --> 00:05:04,980
Y acá simplemente creamos la instancia y automáticamente se lanza new usuario.

72
00:05:05,130 --> 00:05:08,980
No he encontrado Heidy punto string.

73
00:05:10,530 --> 00:05:11,010
Se fijan?

74
00:05:11,100 --> 00:05:12,630
Entonces es más simple.

75
00:05:13,020 --> 00:05:20,190
Evitamos el IF y lo hacemos de una forma utilizando YABA 8 ya presiona el lambda y por supuesto el API

76
00:05:20,280 --> 00:05:20,850
opcional.

77
00:05:20,970 --> 00:05:22,920
Otra forma de implementarlo ahora.

78
00:05:22,920 --> 00:05:24,600
Por supuesto, el resultado es el mismo.

79
00:05:24,690 --> 00:05:28,920
No cambia lo que cambia la implementación de cómo lo implementamos por debajo el código.

80
00:05:29,100 --> 00:05:30,540
Pero la funcionalidad es igual.

81
00:05:31,050 --> 00:05:32,010
Volvemos a probar.

82
00:05:32,610 --> 00:05:43,020
Se fijan el resultado exactamente el mismo día 7 10 usuarios he encontrado diferentes alternativas que

83
00:05:43,020 --> 00:05:46,410
podemos implementar en Ya continuamos en la siguiente clase.
