1
00:00:00,210 --> 00:00:00,840
Bienvenidos.

2
00:00:00,870 --> 00:00:05,160
Continuamos una nueva sección con los genéricos de Yaba o Lleba Generics.

3
00:00:05,300 --> 00:00:12,240
Bueno, esta nueva característica se introdujo en la versión 5 de JDK con el objetivo de que nuestro

4
00:00:12,240 --> 00:00:17,340
código sea mucho más reutilizable y también reducir errores relacionado al tipo de datos.

5
00:00:17,430 --> 00:00:22,860
Cuando hacemos cast, cuando convertimos de un tipo a otro agregando una capa de abstracción sobre los

6
00:00:22,860 --> 00:00:28,230
tipos, claro, entonces nos permite crear clases e interfaces que ya son genérica, pero hacerla mucho

7
00:00:28,230 --> 00:00:28,770
más genérica.

8
00:00:28,830 --> 00:00:34,050
Bueno, como el ejemplo que tenemos nuestro ejemplo repositorio, después lo vamos a modificar para

9
00:00:34,140 --> 00:00:39,330
que utilice generics de Yaba y así sea, pero 100 por ciento reutilizable.

10
00:00:39,450 --> 00:00:45,000
Es decir, no solamente sea aplicable a cliente, sino también a cualquier tipo objeto para tener un

11
00:00:45,000 --> 00:00:51,750
repositorio tanto de cliente como de usuario común y corriente, pero también de facturas, de un producto

12
00:00:51,840 --> 00:00:53,340
o de lo que sea, cualquier cosa.

13
00:00:53,500 --> 00:00:54,900
Bien, vamos a hacer algo distinto.

14
00:00:54,990 --> 00:00:59,640
Vamos a seguir trabajando en este proyecto porque después, como digo, lo tenemos que modificar.

15
00:00:59,730 --> 00:01:04,320
No quiero crear un proyecto nuevo después de tener que abrir nuevamente el repositorio.

16
00:01:04,380 --> 00:01:04,680
En fin.

17
00:01:04,770 --> 00:01:06,870
Entonces vamos a trabajar sobre este mismo proyecto.

18
00:01:07,040 --> 00:01:12,240
Bueno, y por supuesto, antes de modificar y emigrar a Generics, vamos a trabajar un poco.

19
00:01:12,330 --> 00:01:18,720
Vamos a ver desde la base ya con esta característica de los tipos genéricos me comenzemos, pero si

20
00:01:18,810 --> 00:01:21,300
vamos a cerrar todas las clases, entonces cerramos.

21
00:01:21,450 --> 00:01:24,740
Cerrar todas mantenemos acá el РАМКАХ.

22
00:01:24,960 --> 00:01:26,100
Listo, vamos a crear un.

23
00:01:26,760 --> 00:01:30,680
Entonces p o interfases new pacato.

24
00:01:32,440 --> 00:01:40,960
Entonce or a Guzmán, en vez de peó interfases, vamos a tener acá un рамках generics o genericos,

25
00:01:41,350 --> 00:01:41,860
se fijan?

26
00:01:41,950 --> 00:01:46,120
Entonces bueno, acá tenemos generics o genericos y interfases.

27
00:01:46,240 --> 00:01:47,830
Acá está nuestro ejemplo anterior.

28
00:01:48,070 --> 00:01:53,920
Acá vamos a crear todo nuestro ejemplos y programa utilizando generics desde la base.

29
00:01:54,100 --> 00:01:54,760
Comencemos.

30
00:01:54,850 --> 00:01:57,430
Vamos a crear una clase con el método main.

31
00:02:00,130 --> 00:02:01,210
Ejemplo genericos.

32
00:02:04,150 --> 00:02:04,470
Me.

33
00:02:05,760 --> 00:02:10,650
Bien, vamos a partir desde la raíz y la necesidad de implementar estos tipo de auto para hacer nuestras

34
00:02:10,650 --> 00:02:15,900
aplicaciones más segura en todo lo que conversión de tipo datos y trabajar con distintos tipos que sean

35
00:02:15,900 --> 00:02:17,010
mucho más genéricos.

36
00:02:17,280 --> 00:02:19,560
Reducir también errores de compilación.

37
00:02:19,680 --> 00:02:20,970
En fin, partamos primero.

38
00:02:21,090 --> 00:02:26,350
Ya sabemos, hemos visto algo sobre las listas y ya sabemos que traja con genéricos se fijan list.

39
00:02:26,580 --> 00:02:28,710
Acá se agrega un tipo de dato.

40
00:02:28,920 --> 00:02:32,220
Ya, pero por ahora simplemente el lista la vamos a importar.

41
00:02:32,220 --> 00:02:34,320
Si la vamos a importar de yaba útil.

42
00:02:34,780 --> 00:02:35,340
Perfecto.

43
00:02:35,520 --> 00:02:38,920
List igual new array.

44
00:02:38,970 --> 00:02:39,390
Listo.

45
00:02:41,040 --> 00:02:44,850
Ven y vamos a quitar estos corchetes triangulares que se le conoce.

46
00:02:44,940 --> 00:02:47,340
O también operador diamante.

47
00:02:47,550 --> 00:02:49,110
También se le conoce como diamante.

48
00:02:49,530 --> 00:02:49,800
Listo.

49
00:02:49,800 --> 00:02:51,690
Se fijan y vamos a trabajar con cliente.

50
00:02:51,780 --> 00:02:56,190
Entonces acá vamos a colocar el nombre de variable clientes.

51
00:02:56,400 --> 00:02:58,230
Entonces hacer una lista de clientes.

52
00:02:58,590 --> 00:02:59,130
Perfecto.

53
00:02:59,490 --> 00:03:00,150
Lo siguiente.

54
00:03:00,210 --> 00:03:01,320
Bueno, agrega Cliente.

55
00:03:01,320 --> 00:03:04,530
Ya tenemos nuestra clase cliente del ejemplo anterior.

56
00:03:04,620 --> 00:03:05,850
Así que la vamos a reutilizar.

57
00:03:05,940 --> 00:03:06,580
Esta acá.

58
00:03:06,810 --> 00:03:07,560
Entonces.

59
00:03:07,590 --> 00:03:08,310
Clientes.

60
00:03:09,590 --> 00:03:09,830
Punto.

61
00:03:10,530 --> 00:03:16,350
Se fijan igual me permite crear objetos, pero como nos estamos manejando genérico de Java por defecto

62
00:03:16,350 --> 00:03:19,290
va a ser del tipo Object, el tipo más genérico que lleva.

63
00:03:19,350 --> 00:03:21,750
Entonces vamos a agregar un new cliente.

64
00:03:22,860 --> 00:03:24,560
Lo importamos de este pacato.

65
00:03:26,810 --> 00:03:29,740
Andrés Guzmán.

66
00:03:29,810 --> 00:03:30,410
Perfecto.

67
00:03:30,890 --> 00:03:31,910
Ahí tenemos un cliente.

68
00:03:32,060 --> 00:03:34,880
Bueno, podría agregar más, pero para el ejemplo da lo mismo.

69
00:03:35,090 --> 00:03:36,960
Ahora, qué pasa si yo quiero obtener este cliente?

70
00:03:37,400 --> 00:03:43,770
Entonces el cliente del Abandoned Andrés igual hay dos formas clientes.

71
00:03:43,880 --> 00:03:47,390
Punto guet con el índice sabemosque pertencer.

72
00:03:47,420 --> 00:03:51,680
Entonces puedo obtener a través del índice 0, que es el primero.

73
00:03:51,740 --> 00:03:58,190
Andrés está en el 0, pero acá marca un error de sintaxis porque ya no sabe con qué tipo estamos trabajando.

74
00:03:58,310 --> 00:03:59,960
En ninguna parte se indica, se fijan.

75
00:04:00,050 --> 00:04:02,750
Entonces está asumiendo que es del tipo Hoggett?

76
00:04:02,870 --> 00:04:04,070
Bueno, es del tipo Hoggett.

77
00:04:04,160 --> 00:04:08,660
Pero tenemos que indicar de forma explícita de qué tipo es en concreto.

78
00:04:09,020 --> 00:04:09,740
Es decir, cliente.

79
00:04:09,830 --> 00:04:11,420
Y para eso tenemos que hacer un cast.

80
00:04:11,780 --> 00:04:12,290
Se fijan?

81
00:04:12,950 --> 00:04:13,310
Listo.

82
00:04:14,760 --> 00:04:15,230
Cliente.

83
00:04:16,210 --> 00:04:17,610
Hay solución al problema?

84
00:04:17,780 --> 00:04:19,410
Bien, yo puedo trabajar con Andrés.

85
00:04:19,470 --> 00:04:22,140
En fin, esto sería una forma para obtener el cliente.

86
00:04:22,260 --> 00:04:25,290
Otra forma es utilizando el imperator.

87
00:04:26,160 --> 00:04:34,120
Por ejemplo, si colocamos acá iterador y datos, movemos el cursor, ya que es un iterador punto next.

88
00:04:35,670 --> 00:04:40,260
Obtenemos el primer elemento, se fijan y también obtenemos el elemento cero.

89
00:04:40,350 --> 00:04:41,540
Índice cero Andres.

90
00:04:42,120 --> 00:04:42,840
Pero lo mismo.

91
00:04:44,310 --> 00:04:49,080
Next Por defecto va a retornar un tipo genérico del tipo objeto.

92
00:04:49,170 --> 00:04:52,410
Se fijan, pero lo estamos asignando al tipo cliente.

93
00:04:52,560 --> 00:04:56,550
Por lo tanto, requiere hacer el často y eso es un problema.

94
00:04:56,580 --> 00:05:02,220
Porque qué pasa si como desarrollador o cualquier programador se equivoca y en a colocar acá cliente.

95
00:05:02,310 --> 00:05:04,650
Por ejemplo, colocamos un string.

96
00:05:05,730 --> 00:05:09,390
Y acá también se fijan.

97
00:05:09,510 --> 00:05:13,290
No da error, pero está guardando clientes y no tipo de datos string.

98
00:05:13,710 --> 00:05:14,130
Se fijan?

99
00:05:14,520 --> 00:05:16,110
Entonces, bueno, yo podría ejecutar esto.

100
00:05:16,320 --> 00:05:17,310
Vamos a ver qué pasa.

101
00:05:17,820 --> 00:05:18,510
Lanzo un error.

102
00:05:18,630 --> 00:05:23,370
No acepto un cast exception, es decir, no puede convertir a un cliente en un tipo string.

103
00:05:23,460 --> 00:05:24,120
Y es correcto.

104
00:05:24,780 --> 00:05:30,840
Bueno, para evitar este tipo de problema es que se crea esta necesidad de implementar tipos genéricos

105
00:05:30,900 --> 00:05:31,430
en Java.

106
00:05:31,530 --> 00:05:31,860
Para qué?

107
00:05:31,860 --> 00:05:37,710
No solamente evitar errores y también ensuciar nuestro código con el cast, sino que también para que

108
00:05:37,710 --> 00:05:38,640
sea más reutilizable.

109
00:05:38,910 --> 00:05:42,000
Entonces esto mismo puede quedar mucho mejor si se fijan.

110
00:05:42,420 --> 00:05:47,670
De hecho, voy a cerrar acá y vamos a agregar acá el tipo cliente.

111
00:05:48,840 --> 00:05:54,840
Entonces indicamos de forma explícita que vamos a crear una lista, un ArrayList de cliente indicamos

112
00:05:54,840 --> 00:05:55,410
el tipo.

113
00:05:55,530 --> 00:06:01,170
Por lo tanto, esta lista va a trabajar por detrás con los clientes y acá de forma opcional.

114
00:06:01,290 --> 00:06:05,700
Después del nombre de la clase, colocamos también el operador diamante.

115
00:06:05,820 --> 00:06:08,250
Se fijan, pero es opcional colocar el cliente.

116
00:06:08,370 --> 00:06:09,480
De hecho, es redundante.

117
00:06:10,470 --> 00:06:12,300
Cliente se puede omitir.

118
00:06:12,570 --> 00:06:14,070
Se fijan incluso acá lo dice.

119
00:06:14,550 --> 00:06:15,330
Es redundante.

120
00:06:15,570 --> 00:06:18,210
Simplemente se puede colocar la llave triangulares.

121
00:06:19,580 --> 00:06:20,210
O Diamante.

122
00:06:20,270 --> 00:06:20,720
Nada más.

123
00:06:20,810 --> 00:06:27,260
Acá indicamos el tipo y acá sí que me marca error en tiempo, no de ejecución, sino es decir, cuando

124
00:06:27,260 --> 00:06:32,420
estoy escribiendo código es mucho más robusto en todo lo que es manejo de error.

125
00:06:32,480 --> 00:06:35,600
Entonces, simplemente acá ya no necesario tener que hacer el cast.

126
00:06:36,910 --> 00:06:39,700
Lleca cliente de Vigen.

127
00:06:40,650 --> 00:06:41,820
No pidas ser casto.

128
00:06:42,000 --> 00:06:44,640
De hecho, si hacemos caso, también sería redundante.

129
00:06:44,730 --> 00:06:51,210
Lo podemos hacer, sí, pero lo necesario, ya que lo estamos indicando acá, acÃstica es redundante.

130
00:06:51,330 --> 00:06:54,900
De hecho, lo marca acá en gris remover redundante gasto.

131
00:06:55,920 --> 00:06:59,820
Entonces es mucho más limpio, nuestro código es mucho más transparente y eso es lo que es.

132
00:06:59,940 --> 00:07:01,630
Los genéricos de ya bien.

133
00:07:01,680 --> 00:07:05,430
Pero también podemos crear métodos genéricos, crear clase genérica.

134
00:07:05,520 --> 00:07:11,190
En fin, es lo que vamos a ver antes de modificar nuestro ejemplo repositorio que tenemos acá.

135
00:07:12,070 --> 00:07:13,750
Entonces la idea es partir desde la base.

136
00:07:14,530 --> 00:07:17,360
Bueno, vamos a tener, por ejemplo, un método.

137
00:07:17,680 --> 00:07:19,000
Bueno, puede ser lo mismo.

138
00:07:19,630 --> 00:07:25,250
Estos aplica tanto métodos estáticos o métodos de la instancia que no sean estáticos para este ejemplo.

139
00:07:25,270 --> 00:07:28,360
Como estamos trabajando en el main, que es estático.

140
00:07:28,840 --> 00:07:31,750
Bueno, vamos a crear un método estático genérico.

141
00:07:32,050 --> 00:07:37,930
Bien, entonces un public static vamos a retornar una lista.

142
00:07:38,000 --> 00:07:41,980
Bueno, la idea es convertir un arreglo de algún tipo de objeto.

143
00:07:41,980 --> 00:07:48,310
Por ejemplo, arreglo de clientes, convertirlo en un tipo list de cliente, en una lista de clientes.

144
00:07:48,430 --> 00:07:50,470
Entonces convertir de arreglo a lista.

145
00:07:51,040 --> 00:07:53,000
Entonces, por supuesto, va a retornar un list.

146
00:07:53,200 --> 00:07:55,480
Bien, por ahora lo dejaré así, tal cual.

147
00:07:55,840 --> 00:08:06,430
Cliente cliente perdonar una lista cliente entonces from array hacia tu list convertir a una lista.

148
00:08:06,700 --> 00:08:12,220
Bien, entonces pasamos como argumento un arreglo cliente corchete.

149
00:08:12,940 --> 00:08:18,100
Le vamos a llamar C de clientes por nombre que queramos y listo.

150
00:08:18,250 --> 00:08:19,420
Entonces, cómo podemos convertir?

151
00:08:19,590 --> 00:08:25,180
Bueno Rotor, hay varias formas, pero después vamos a ver el API Stream de Java con el API Stream.

152
00:08:25,270 --> 00:08:30,070
Hoy tenemos diferentes mecanismos, pero también podemos utilizar arrays.

153
00:08:30,190 --> 00:08:34,330
La clase helpers a raíz de lleba útil la importamos de Java útil.

154
00:08:34,390 --> 00:08:39,940
El método hace el list que puede recibir un arreglo y convertirlo a una lista.

155
00:08:40,030 --> 00:08:46,270
Colocamos C por ejemplo se fijan ya acá tenemos un método, pero el problema es que muy concreto es

156
00:08:46,270 --> 00:08:52,600
poco reutilizable, poco genérico por así decir, ya que solamente nos permite crear, es decir, convertir

157
00:08:52,870 --> 00:08:56,200
un arreglo de clientes a una lista de clientes, pero solamente clientes.

158
00:08:56,410 --> 00:09:02,020
Y yo podría querer convertir cualquier tipo de dato, no solamente clientes, un producto, una factura,

159
00:09:02,140 --> 00:09:04,270
un automóvil o lo que sea, se fijan.

160
00:09:04,370 --> 00:09:10,870
Entonces acá entran los genéricos hacer métodos mucho más reutilizable, que se apliquen a cualquier

161
00:09:10,870 --> 00:09:14,200
tipo de auto, es decir, que tu argumento sean qué tipo?

162
00:09:14,440 --> 00:09:14,790
Cómo?

163
00:09:14,830 --> 00:09:21,790
Bueno, lo primero en la declaración del método en el cuerpo, justo después del modificador o modificadores

164
00:09:21,910 --> 00:09:29,530
y antes del retorno del tipo auto, vamos a colocar las llaves triangulares o diamante y acá vamos a

165
00:09:29,530 --> 00:09:30,760
indicar el genérico.

166
00:09:30,850 --> 00:09:35,920
Acá estoy especificando que vamos a utilizar un método genérico por convención se escribe en mayúscula

167
00:09:36,010 --> 00:09:36,760
una sola letra.

168
00:09:36,910 --> 00:09:42,460
Da lo mismo, puede ser t, r, e o lo que queramos, pero típicamente se utiliza T para trabajar con

169
00:09:42,460 --> 00:09:42,970
listas.

170
00:09:43,090 --> 00:09:44,530
Ya, pero da lo mismo.

171
00:09:44,710 --> 00:09:47,890
Entonces colocamos té y acá reemplazamos en vez de clientes.

172
00:09:48,220 --> 00:09:52,840
Vamos a usar este genérico té, entonces puede ser cualquier cosa.

173
00:09:53,680 --> 00:09:56,590
Y acá, por supuesto, en vez de cliente T.

174
00:09:57,770 --> 00:09:58,310
Y listo.

175
00:09:58,490 --> 00:10:04,040
Ahí tenemos un método genérico y ya no solamente pueden convertir clientes, sino también un arreglo

176
00:10:04,040 --> 00:10:06,680
de números de enteros, un arreglo de string.

177
00:10:06,800 --> 00:10:08,600
En fin, bien, pongámoslo en funcionamiento.

178
00:10:08,660 --> 00:10:20,120
Vamos a crear por acá un arreglo de cliente cliente, por ejemplo, bien corchete clientes y vamos a

179
00:10:20,120 --> 00:10:21,740
crear así, no cierto?

180
00:10:22,520 --> 00:10:22,840
Acá.

181
00:10:22,940 --> 00:10:25,370
Perdón, cliente no, porque ya lo tenemos acá en la lista.

182
00:10:25,550 --> 00:10:27,320
Vamos a colocar clientes.

183
00:10:27,440 --> 00:10:29,750
Arreglo, eso sí.

184
00:10:30,530 --> 00:10:31,010
Perfecto.

185
00:10:31,010 --> 00:10:34,010
Entonces ahora vamos a tener Andrés este de acá.

186
00:10:34,100 --> 00:10:35,390
De hecho, podría copiar esto.

187
00:10:36,410 --> 00:10:39,470
Y podríamos tener dos, entonces uno coma.

188
00:10:39,530 --> 00:10:40,970
Voy a bajar dos.

189
00:10:41,150 --> 00:10:41,510
Listo.

190
00:10:41,600 --> 00:10:43,410
Hoy tenemos dos, dos clientes.

191
00:10:44,000 --> 00:10:48,650
Acá falta cerrar y me falta cerrar el primero.

192
00:10:48,920 --> 00:10:51,170
Lucy Martínez.

193
00:10:53,500 --> 00:10:54,340
Y el segundo?

194
00:10:54,490 --> 00:10:55,990
Bueno, Andrew Goodman, perfecto.

195
00:10:56,110 --> 00:10:56,830
Ahí tenemos un arreglo.

196
00:10:57,250 --> 00:11:04,300
Pero también podría tener un arreglo de Integer corchete enteros.

197
00:11:05,710 --> 00:11:07,780
Uno, dos, tres.

198
00:11:07,990 --> 00:11:08,560
Perfecto.

199
00:11:09,320 --> 00:11:09,760
Electo.

200
00:11:09,940 --> 00:11:13,270
Y así también podremos tener lo que sea un string o cualquier tipo.

201
00:11:13,540 --> 00:11:14,950
Ahora vamos a probar.

202
00:11:15,130 --> 00:11:16,540
Ya tenemos una lista de clientes.

203
00:11:16,540 --> 00:11:19,600
Se fijan un cliente, pero voy a tener otra.

204
00:11:19,750 --> 00:11:23,890
Pero esta otra base, la conversión del arreglo utilizando este método.

205
00:11:24,370 --> 00:11:27,610
Entonces por acá un listo cliente.

206
00:11:28,360 --> 00:11:30,040
Le voy a llamar clientes.

207
00:11:30,100 --> 00:11:35,710
Dos se fijan para no tener conflicto conectÃ que ya existe.

208
00:11:36,100 --> 00:11:41,260
Entonces igual el método estático from from array tú listo.

209
00:11:41,440 --> 00:11:41,770
Perfecto.

210
00:11:41,770 --> 00:11:43,000
Entonces pasamos.

211
00:11:43,090 --> 00:11:48,220
Está acá el arreglo de clientes clientes arreglo se fijan.

212
00:11:48,280 --> 00:11:55,630
Entonces puedo convertir un arreglo cliente arreglo en una lista de cliente utilizando este método de

213
00:11:55,630 --> 00:12:04,790
forma genérica, pero también convertir enteros en tellano una lista de enteros enteros.

214
00:12:05,050 --> 00:12:08,320
Dos, porque el enteros acá es un arreglo.

215
00:12:08,440 --> 00:12:11,170
Se fijan iete en la lista.

216
00:12:11,500 --> 00:12:14,140
Bueno, podríamos organizar los nombre para que?

217
00:12:14,290 --> 00:12:15,190
Para que esté más claro.

218
00:12:15,280 --> 00:12:19,080
Por ejemplo enteros arreglo perfecto.

219
00:12:19,240 --> 00:12:22,270
Y este enteros lista.

220
00:12:22,780 --> 00:12:24,490
Y acá clientes lista.

221
00:12:27,020 --> 00:12:32,330
Bien, ahora from array tu list pasamos enteros arreglá.

222
00:12:35,300 --> 00:12:38,540
También se fijan, y así es compatible con cualquier tipo.

223
00:12:38,630 --> 00:12:39,860
Y lo hace genérico.

224
00:12:40,860 --> 00:12:44,060
Entonces, ahora, por ejemplo, clientes lista.

225
00:12:44,580 --> 00:12:45,120
De acá.

226
00:12:45,480 --> 00:12:46,480
Punto foreach.

227
00:12:46,950 --> 00:12:47,680
Podemos imprimir.

228
00:12:48,390 --> 00:12:50,650
Usamos la forma con método de referencia.

229
00:12:50,750 --> 00:12:51,960
Entonces 7 en punto.

230
00:12:52,080 --> 00:12:53,190
Otro punto.

231
00:12:53,190 --> 00:12:54,330
Punto y acá.

232
00:12:54,360 --> 00:12:55,950
Print line perfecto.

233
00:12:56,520 --> 00:12:59,450
Pero también esto mismo para enteros.

234
00:13:00,120 --> 00:13:00,780
Enteros.

235
00:13:00,900 --> 00:13:01,350
Lista.

236
00:13:02,490 --> 00:13:02,850
Punto.

237
00:13:02,850 --> 00:13:03,490
forEach.

238
00:13:04,020 --> 00:13:04,510
Y lo vemos.

239
00:13:09,030 --> 00:13:09,660
Vamos a probar.

240
00:13:09,900 --> 00:13:10,770
Vamos a levantar.

241
00:13:14,520 --> 00:13:19,000
Entonces acá tenemos una lista de clientes, una lista de enteros.

242
00:13:20,520 --> 00:13:21,420
Voy a cerrar acá.

243
00:13:21,660 --> 00:13:22,620
Continuamos.

244
00:13:22,810 --> 00:13:25,820
Bien, ahora este método solamente recibe un parámetro.

245
00:13:26,040 --> 00:13:31,350
Esto se le conoce como parámetros genéricos, ya que trabajamos de forma genérica con estos tipos de

246
00:13:31,350 --> 00:13:31,740
datos.

247
00:13:31,860 --> 00:13:37,460
En nuestro método, pero como tenemos uno solo, podríamos tener más separado por comas.

248
00:13:37,840 --> 00:13:40,860
Bien, voy a copiar este método y vamos a tener una sobrecarga.

249
00:13:41,880 --> 00:13:45,770
Entonces bueno, acá voy a colocar coma, je.

250
00:13:46,050 --> 00:13:50,670
Recuerden usar tipos mayúscula es convención, ya es estándar.

251
00:13:51,180 --> 00:13:54,630
Entonces una sola letra alfabética y en mayúscula.

252
00:13:55,020 --> 00:13:58,440
Pero bien va a retornar una lista de temas de este tipo.

253
00:13:58,530 --> 00:14:06,660
No dejé entonces la idea de que este método from array tu list, pero la idea de que convierta el té,

254
00:14:06,780 --> 00:14:10,290
el tipo té genérico está acá y el té acá.

255
00:14:10,380 --> 00:14:12,630
Imprima, muestre el dato.

256
00:14:13,630 --> 00:14:15,670
Bien, entonces vamos a tener.

257
00:14:16,330 --> 00:14:22,300
Bueno, podría ser, por ejemplo, cualquier tipo, ya no necesariamente un arreglo.

258
00:14:22,420 --> 00:14:26,830
Acá estamos trabajando con arreglo para convertirlo a un tipo lista, pero podría ser, no un arreglo.

259
00:14:27,070 --> 00:14:33,880
Se fijan un tipo de gían y hacer algo con este tipo de dato de acá para que sea más explicativo.

260
00:14:34,060 --> 00:14:36,910
Vamos a utilizar arreglo para poder iterar y mostrarlo.

261
00:14:37,090 --> 00:14:40,690
Entonces dos arreglo, uno del tipo té y otro el tipo G.

262
00:14:41,260 --> 00:14:42,430
Acá lo indicamos.

263
00:14:42,790 --> 00:14:49,660
Acá se definen los tipos genéricos como parámetros en el método y acá trabajamos con estos tipos.

264
00:14:50,620 --> 00:14:56,570
Entonces ya sabemos, el C es para convertir y el G lo vamos a iterar.

265
00:14:57,190 --> 00:15:00,550
Entonces for quiero iterar el G de qué tipo de dato es?

266
00:15:01,090 --> 00:15:02,320
Es un arreglo del tipo G.

267
00:15:02,740 --> 00:15:07,000
Este es el tipo y este es el nombre de la variable o argumento.

268
00:15:07,210 --> 00:15:12,280
Como le puse G le voy a poner X o da lo mismo si el nombre del argumento.

269
00:15:13,240 --> 00:15:19,270
Y este es el tipo acá, entonces es del tipo Jía elemento.

270
00:15:19,780 --> 00:15:23,000
También nombre variable de lo mismo, de la fuente del origen.

271
00:15:23,140 --> 00:15:24,100
Cuál es el origen?

272
00:15:24,700 --> 00:15:25,120
X.

273
00:15:28,110 --> 00:15:32,430
El arreglo shout que vamos a imprimir elemento.

274
00:15:34,240 --> 00:15:34,540
Y listo.

275
00:15:34,660 --> 00:15:37,000
Tenemos un método con dos tipos genéricos.

276
00:15:37,090 --> 00:15:39,670
Uno simplemente lo itera y lo imprime.

277
00:15:39,740 --> 00:15:46,780
Que del tipo genérico ojeé, pues ser cualquier cosa, cualquier tipo dato y otro del tipo T también

278
00:15:46,870 --> 00:15:53,350
cualquier otro tipo dato, pero lo muestra, es decir, lo convierte, pero lo convierte a una lista.

279
00:15:54,220 --> 00:15:55,960
Bien, vamos a ver acá cómo sería.

280
00:15:57,340 --> 00:15:58,150
Voy a copiar.

281
00:15:58,360 --> 00:16:03,580
O mejor, voy a crear acá otra cosa del tipo string.

282
00:16:04,090 --> 00:16:06,250
Un list del tipo String.

283
00:16:09,530 --> 00:16:13,700
Nombres Vejan from acá ArrayList.

284
00:16:14,630 --> 00:16:17,240
Vamos a pasar un arreglo nombre en una forma.

285
00:16:17,270 --> 00:16:22,670
Bueno, ya sabemos que podemos crear acá un areal del tipo arreglo clientes Integer, pero también podemos

286
00:16:22,670 --> 00:16:30,800
crear un areal al vuelo Mikki, una variable, una instancia al vuelo, por ejemplo New String String

287
00:16:30,800 --> 00:16:41,240
corchete con los elementos y acá separador coma por ejemplo Andrés, Pepe Coma.

288
00:16:41,420 --> 00:16:43,960
Voy a bajar Lucy.

289
00:16:45,740 --> 00:16:52,490
Vea ya John se fijan bien, ahí tenemos con 1.

290
00:16:52,820 --> 00:16:59,060
Entonces con uno solo solamente va a convertir, pero si colocamos coma y otro arreglo lo va a imprimir

291
00:16:59,120 --> 00:16:59,720
y convertir.

292
00:17:00,110 --> 00:17:03,170
Por ejemplo, el segundo podría ser cualquiera entero.

293
00:17:03,170 --> 00:17:07,490
Arreglo voy a reutilizar esta acá enteros arreglo.

294
00:17:09,120 --> 00:17:10,860
Se fijan y lo vas a ejecutar.

295
00:17:13,280 --> 00:17:14,990
Qué pasa si fijan?

296
00:17:15,970 --> 00:17:17,940
Acá imprime 1, 2, 3.

297
00:17:18,160 --> 00:17:24,130
Claro, porque el segundo que se pasa por argumento acá lo imprime y el primero lo convierte a una lista

298
00:17:24,760 --> 00:17:26,290
o una lista de nombres.

299
00:17:28,250 --> 00:17:30,170
Nombres punto foreach.

300
00:17:34,470 --> 00:17:37,380
Ahora imprimimos los nombres de la lista.

301
00:17:38,900 --> 00:17:41,210
Bejan, André, Pepelu, Silbé y John.

302
00:17:41,690 --> 00:17:44,480
Y eso tipo de dato genérico, pero métodos.

303
00:17:44,720 --> 00:17:50,090
La próxima clase continuamos con estos tipos genéricos, también de métodos, pero un poco más limitados,

304
00:17:50,210 --> 00:17:54,250
que se le conoce como vande generics bonded de límite.

305
00:17:54,380 --> 00:18:00,140
Es decir, limitar a que, por ejemplo, los tipos genéricos sean una implementación de una interfaz

306
00:18:00,230 --> 00:18:04,460
o de una clase abstracta, o una clase padre o superclase.

307
00:18:04,580 --> 00:18:06,410
Continuamos en la siguiente clase.
