1
00:00:00,210 --> 00:00:04,920
Bien, veamos cómo limitar a los tipos genéricos, bueno, que también se le conoce como Bandit Generics,

2
00:00:04,980 --> 00:00:11,910
pero bien, acá tenemos algunas listas, por ejemplo de cliente y de enteros, y pasamos un arreglo

3
00:00:11,910 --> 00:00:13,620
cliente, un arreglo enteros.

4
00:00:14,040 --> 00:00:18,960
Bien, pero fíjense en lo siguiente qué pasa si quiero limitar este método from array chulis?

5
00:00:19,050 --> 00:00:23,160
Solamente que sean tipos number de yaba, por ejemplo?

6
00:00:23,280 --> 00:00:28,470
Recuerden que un tipo number es un integer, es un chord, es un bit, es un long.

7
00:00:28,590 --> 00:00:31,670
Cualquier tipo numérico también un float, un doble.

8
00:00:31,800 --> 00:00:32,700
Se fijan todo.

9
00:00:32,820 --> 00:00:35,220
Heredan de Lambert number en la clase abstracta.

10
00:00:35,910 --> 00:00:43,290
Entonces extends acá en el generics cuando indicamos o especificamos este parámetro en el método.

11
00:00:43,350 --> 00:00:48,390
Recuerden, son parámetros pero de genéricos, porque acá tenemos parámetros método y acá tenemos parámetro

12
00:00:48,390 --> 00:00:50,880
del método, pero relacionado a los genéricos.

13
00:00:51,000 --> 00:00:53,940
Bien stents number se fijan.

14
00:00:54,390 --> 00:00:57,840
Acá podemos pasar solamente tipos de lampert.

15
00:00:58,140 --> 00:00:59,940
Por supuesto, cliente marca un error.

16
00:00:59,940 --> 00:01:06,090
Acá no se aplica, se fijan, ya no cumple con este contrato, pero sin embargo List@ Integer si lo

17
00:01:06,090 --> 00:01:08,820
cumple estamos limitando los genéricos.

18
00:01:08,910 --> 00:01:16,170
Por lo tanto, así como Integer también podemos pasar un tipo long, un tipo chord, un bit, se fijan

19
00:01:16,350 --> 00:01:16,980
un double.

20
00:01:17,220 --> 00:01:17,610
En fin.

21
00:01:18,390 --> 00:01:20,340
Ahora bien, también podríamos tener sobrecarga.

22
00:01:20,550 --> 00:01:22,530
Es decir, voy a copiar este método.

23
00:01:23,640 --> 00:01:28,530
Se van a fijar que lo voy a pegar acá y este lo voy a quitar luego voy a dejar como estaba.

24
00:01:29,400 --> 00:01:35,100
Entonces uno acepta todo y otro solamente en Ámber, aunque pueden tener incluso implementaciones distintas,

25
00:01:35,100 --> 00:01:35,580
lo mismo.

26
00:01:35,880 --> 00:01:42,060
Entonces claro, este método acá from array, tu list va a invocar esta acá, por supuesto, y lo podremos

27
00:01:42,060 --> 00:01:43,410
ver acá en la firma.

28
00:01:43,410 --> 00:01:51,840
El método se fija en public static solamente the list se fijan este método, mientras que en Laka from

29
00:01:51,930 --> 00:01:56,850
a right tu listo te estén lampert la clase abstracta number.

30
00:01:57,240 --> 00:02:03,450
Bueno, aprovechando, recuerden que la clase number va a hacer un clic acá de ya va, estoy tras abstracta.

31
00:02:03,720 --> 00:02:09,840
No se crean todos los tipos entero, como los double, float, integer, long.

32
00:02:09,960 --> 00:02:10,920
En fin, chord.

33
00:02:12,030 --> 00:02:13,080
Y tiene método abstracto.

34
00:02:13,290 --> 00:02:14,490
Tienen que también por ahí lo vimos.

35
00:02:15,240 --> 00:02:21,120
Entonces, contra el click se fijan una clase abstracta o menos lo que hemos visto con métodos abstracto

36
00:02:21,300 --> 00:02:27,360
public abstract para convertir a entero convertir al lonko y cada implementación implementa estos métodos

37
00:02:27,360 --> 00:02:28,410
con su propia forma.

38
00:02:28,530 --> 00:02:34,410
También tiene métodos implementados, alguno implementado y otros abstracto abstracto para convertir

39
00:02:34,530 --> 00:02:38,010
hacia Primitivo todo lo que sea long, value, flow, value.

40
00:02:38,110 --> 00:02:39,090
Devuélvalo.

41
00:02:39,330 --> 00:02:40,140
Int válido.

42
00:02:40,230 --> 00:02:40,650
En fin.

43
00:02:41,550 --> 00:02:42,990
Ok, continuemos.

44
00:02:43,470 --> 00:02:44,580
Bien, veamos otro ejemplo.

45
00:02:44,670 --> 00:02:47,640
Qué pasa si tengo clientes por acá?

46
00:02:48,300 --> 00:02:51,630
Modelo tengo cliente, pero voy a tener un cliente premium.

47
00:02:52,110 --> 00:02:56,350
Entonces voy a crear una clase ok?

48
00:02:57,000 --> 00:03:01,860
Y por supuesto, hereda extends de cliente.

49
00:03:03,750 --> 00:03:04,320
Perfecto.

50
00:03:05,010 --> 00:03:07,710
Solamente voy a sobrescribir el constructor.

51
00:03:07,830 --> 00:03:10,890
El constructor porque recuerden, cliente lo tenemos acá.

52
00:03:11,520 --> 00:03:12,750
Acá tienen los atributos.

53
00:03:12,810 --> 00:03:16,050
Tiene un constructor y también un constructor con argumento.

54
00:03:16,140 --> 00:03:22,980
Voy a escribir este de acá y todo los métodos que transceptor cierto que son public, así que lo podríamos

55
00:03:23,070 --> 00:03:25,650
utilizar, así que está bien, igual que lo demás.

56
00:03:26,430 --> 00:03:28,570
Entonces solamente el constructor lideré.

57
00:03:28,620 --> 00:03:30,930
Yo generé constructor.

58
00:03:32,120 --> 00:03:32,700
Este de acá.

59
00:03:33,140 --> 00:03:33,530
Ok.

60
00:03:34,000 --> 00:03:34,820
Listo con el super.

61
00:03:34,910 --> 00:03:35,390
Nada más.

62
00:03:35,660 --> 00:03:40,910
Bueno, obviamente podré tener atributos propios, pero para el ejemplo de lo mismo lo dejamos tal cual.

63
00:03:42,070 --> 00:03:44,200
Bien, entonces podríamos tener otro método.

64
00:03:44,320 --> 00:03:46,090
Acá voy a copiar.

65
00:03:48,070 --> 00:03:56,830
Stents cliente, es decir, en este método va a aceptar cualquier tipo o genérico que sea del tipo cliente

66
00:03:56,950 --> 00:04:01,600
y también subclases, es decir, clases que heredan de cliente como cliente premio.

67
00:04:02,440 --> 00:04:08,440
Entonces por lo tanto está acá list@ cliente va a invocar ahora el método que creamos recién.

68
00:04:08,530 --> 00:04:14,500
La sobrecarga quiere de cliente porque es el más cercano, es el más, es con el tipo más preciso,

69
00:04:14,590 --> 00:04:15,380
por así decirlo.

70
00:04:16,040 --> 00:04:19,750
Bien, vamos a crear entonces una lista por acá abajo.

71
00:04:21,750 --> 00:04:31,790
Una lista de clientes, pero el cliente premium se fija en este nuevo tipo de clientes premium.

72
00:04:33,270 --> 00:04:33,690
Listo.

73
00:04:34,460 --> 00:04:38,530
Igual from a Raito listo y vamos a hacer el arreglo.

74
00:04:38,760 --> 00:04:45,870
Bueno, New va a ser un arreglo del tipo cliente premium corchete y las llaves.

75
00:04:46,230 --> 00:04:46,710
Ahí lo estamos.

76
00:04:46,710 --> 00:04:47,820
Instanciar al vuelo.

77
00:04:48,000 --> 00:04:51,120
Voy a bajar acá en el new bajamos.

78
00:04:51,120 --> 00:04:51,900
Perfecto.

79
00:04:53,100 --> 00:04:56,720
Y acá un new cliente premium,

80
00:05:00,960 --> 00:05:04,050
por ejemplo Fernández, y podríamos tener mucho más.

81
00:05:04,080 --> 00:05:07,770
Pero para ejemplo, bueno, uno solo cliente, premio, cuál se invoca?

82
00:05:07,860 --> 00:05:08,550
Cual se llama?

83
00:05:08,730 --> 00:05:10,530
Bueno, por supuesto querida de cliente.

84
00:05:10,830 --> 00:05:14,400
Entonces de esa forma podemos ir acotando los tipos genéricos.

85
00:05:14,670 --> 00:05:20,910
Entonces en este método que implementamos recién estén tinente, acá podemos trabajar con los tipos

86
00:05:21,030 --> 00:05:29,310
ya sea cliente o su descendencia cliente premium y este de acá del tipo number, ya sea del tipo integer

87
00:05:29,460 --> 00:05:34,720
o cualquier implementación, ten hambre, cualquier tipo numérico de Yaba queda más acotado.

88
00:05:34,890 --> 00:05:43,410
Y qué pasa si coloco por ejemplo acá en cliente un AR Prashant por ejemplo, y acá alguna implementación

89
00:05:43,410 --> 00:05:43,900
de interfaz?

90
00:05:43,980 --> 00:05:49,410
Porque claro, puedo ser más tovía concreto, limitar más y decir que sea solamente un tipo de una clase,

91
00:05:49,440 --> 00:05:57,660
pero además que implemente algunas interfaces, por ejemplo comparable, comparable, caté e compararle.

92
00:05:57,670 --> 00:06:02,940
También usamos genéricos porque recuerden, la interfaz comparable también maneja genéricos con el tipo

93
00:06:02,940 --> 00:06:04,410
de la clase que lo implementa.

94
00:06:04,530 --> 00:06:10,830
Importante para evitar Select cast en el método Compartid entonces por eso lo colocamos operador diamante

95
00:06:10,920 --> 00:06:17,250
y la T en comparable se fija en que además cliente implemente o los tipos de cliente implementen la

96
00:06:17,250 --> 00:06:18,240
interfaz comparable.

97
00:06:18,450 --> 00:06:25,170
Bueno, por supuesto que ninguno de estos dos ni este se fijan, ni tampoco cliente premium va a invocar

98
00:06:25,170 --> 00:06:25,650
ese método.

99
00:06:25,740 --> 00:06:34,110
Se invoca el sin estèn, sin el límite este de acá porque el cliente no implementa comparable cliente

100
00:06:34,110 --> 00:06:34,980
premium tampoco.

101
00:06:35,430 --> 00:06:37,920
Ahora, claro, revisemos el cliente primero.

102
00:06:38,070 --> 00:06:38,850
Acá se fijan.

103
00:06:38,940 --> 00:06:41,460
Cliente Premium, por acá se fijan.

104
00:06:41,460 --> 00:06:43,200
Tampoco acá tienen método.

105
00:06:43,350 --> 00:06:47,460
Solamente invocÃ a él sin límites, sin extends este de acá.

106
00:06:47,760 --> 00:06:54,450
Pero voy a ser cliente premium implemente interfaz implementas comparable

107
00:06:56,940 --> 00:06:57,750
cliente premium.

108
00:06:59,050 --> 00:07:03,820
Implementamos el método, aunque no voy a implementar el método, solamente lo dejaré así, acá lo podemos

109
00:07:03,820 --> 00:07:05,890
implementar, da lo mismo si solamente para el ejemplo.

110
00:07:06,070 --> 00:07:12,310
Acá podemos comparar, por ejemplo por algún atributo con el compartid ya se nombre el apellido, el

111
00:07:12,310 --> 00:07:13,700
Heidy o lo que queramos.

112
00:07:14,640 --> 00:07:16,740
Pero bien, si se fijan ahora.

113
00:07:17,700 --> 00:07:24,690
Cliente Premium invocÃ el cliente con el comparable porque cumple contrato es del tipo cliente, sí,

114
00:07:24,720 --> 00:07:31,050
pero también implementa la interfaz comparable ahora cliente no, por acá tenemos cliente acá este no,

115
00:07:31,320 --> 00:07:36,510
este sigue invocando el método sin el límite, sin el extends este de acá, porque el cliente no implementa

116
00:07:36,510 --> 00:07:38,370
la interfaz comparable, pero cliente premium.

117
00:07:38,400 --> 00:07:41,520
Si se fijan nada más continuamos en la siguiente clase.
