1
00:00:01,260 --> 00:00:03,000
Hola bienvenidos a esta elección.

2
00:00:03,010 --> 00:00:07,030
A continuación vamos a estudiar el tema de generic en IAVA están listos.

3
00:00:07,030 --> 00:00:07,540
Vamos

4
00:00:10,980 --> 00:00:17,330
vamos a a cualquier proyecto que tengamos abierto y derecho clocks damos un enfile vamos a crear un

5
00:00:17,330 --> 00:00:24,040
nuevo proyecto seleccionamos mi proyecto ya la web naive y Java Application el nombre del proyecto se

6
00:00:24,040 --> 00:00:27,340
va a llamar manejo genericos

7
00:00:33,700 --> 00:00:42,370
y lo depositamos en cursos diagonal inversa aullaba el nombre del grupo i10 MX con G.M. de Global mentoring.

8
00:00:42,370 --> 00:00:47,950
La versión 1.0 y dejamos vacío el nombre del paquete y damos sigue en finalizar

9
00:00:52,900 --> 00:00:58,170
bien como siguiente paso vamos a crear una clase que va a ser una clase genérica así que damos clic

10
00:00:58,170 --> 00:01:04,260
derecho sobre esos paquetes Nioh y ya va a clase el nombre de la clase se va a llamar clase generica

11
00:01:05,830 --> 00:01:18,100
y la depositamos en el paquete de genéricos y damos fuguen finalizar quitamos estos comentarios y para

12
00:01:18,100 --> 00:01:23,860
definir una clase genérica vamos a indicar un tipo utilizando Piko parentesis

13
00:01:26,440 --> 00:01:32,590
entre los paréntesis vamos a indicar el tipo se pueden utilizar otras letras pero básicamente la letra

14
00:01:32,590 --> 00:01:33,650
T significa Taipe.

15
00:01:34,000 --> 00:01:39,460
Así que al momento que definamos una instancia de esta clase debemos de indicar el tipo que va a almacenar

16
00:01:39,490 --> 00:01:40,750
esta clase.

17
00:01:40,750 --> 00:01:46,060
Por ello se conoce como clase generica ya que no sabemos el tipo de esta clase hasta el momento en que

18
00:01:46,060 --> 00:01:47,790
creamos un objeto de esta clase.

19
00:01:49,090 --> 00:01:51,640
Posteriormente definimos la variable de tipo genérico

20
00:01:57,640 --> 00:02:03,930
definimos una variable de tipo T que va a ser el objeto que va a almacenar esta clase.

21
00:02:03,970 --> 00:02:07,780
Posteriormente definimos un constructor que va inicializar el tipo a utilizar

22
00:02:12,900 --> 00:02:21,090
así que creamos un constructor de la clase generica y recibimos el tipo que vamos a utilizar en esta

23
00:02:21,090 --> 00:02:29,900
clase y utilizamos este argumento para inicializar nuestra variable de clase

24
00:02:32,800 --> 00:02:39,810
bien y ahora agregamos un método para obtener el tipo de esta clase el método se va a llamar obtener

25
00:02:39,810 --> 00:02:40,260
tipo

26
00:02:45,170 --> 00:02:48,010
y mandamos a imprimir el tipo T es

27
00:02:51,280 --> 00:02:58,490
con nuestra variable objeto solicitamos el tipo de la clase y posteriormente solicitamos el nombre G.T

28
00:02:58,500 --> 00:02:59,140
sin poner en

29
00:03:03,550 --> 00:03:09,630
es todo lo que va a tener esta clase genérica en la definición de la clase especificamos el tipo que

30
00:03:09,630 --> 00:03:10,620
va a recibir.

31
00:03:10,620 --> 00:03:16,500
Posteriormente definimos una variable con el tipo genérico que va a almacenar esta variable el constructor

32
00:03:16,530 --> 00:03:23,250
inicializar es de tipo genérico y finalmente mandamos a imprimir el tipo que almacena esta clase genérica

33
00:03:23,880 --> 00:03:29,130
así que no sabemos de qué tipo va a ser esta clase hasta el momento en que vamos a crear un objeto de

34
00:03:29,130 --> 00:03:29,760
esta clase.

35
00:03:30,810 --> 00:03:36,610
Bien como siguiente paso vamos a crear una prueba sobre estos packages damos fe de derecho.

36
00:03:36,650 --> 00:03:45,160
Ya va Clas creamos la clase manejo genericos test y la depositamos en el paquete de test

37
00:03:48,290 --> 00:03:56,230
quitamos estos comentarios agregamos un método Mayne y creamos una clase de tipo integral

38
00:04:00,020 --> 00:04:05,930
utilizamos nuestra clase genérica pero indicamos que va almacenar un tipo integrar de manera interna

39
00:04:10,610 --> 00:04:12,200
así que creamos un nuevo objeto

40
00:04:16,310 --> 00:04:24,330
ya indicamos del lado izquierdo que vamos a utilizar un tipo integral así que al constructor únicamente

41
00:04:24,340 --> 00:04:26,560
le falta pasarle el tipo que va a almacenar.

42
00:04:26,560 --> 00:04:32,290
En este caso ya sea el valor de tipo integral que realmente es una literal de tipo entero pero recordemos

43
00:04:32,290 --> 00:04:40,290
que se hace una conversión en automático hacia el tipo de la clase integer importamos esta clase y con

44
00:04:40,290 --> 00:04:47,280
esto ya podemos inicializar nuestra clase generica posteriormente utilizando nuestra variable objeto

45
00:04:47,310 --> 00:04:53,730
Hint mandamos a llamar el método obtener tipo para comprobar el tipo que está almacenando esta clase

46
00:04:53,730 --> 00:04:56,460
generica guardamos cambios y ejecutamos

47
00:05:00,790 --> 00:05:07,820
y podemos observar que el tipo T de nuestra clase que hemos instancia es de tipo integral es el tipo

48
00:05:07,820 --> 00:05:09,890
que está almacenando esta clase generica

49
00:05:12,660 --> 00:05:18,780
bien así que con esto ponemos a prueba nuestra clase generica ahora vamos a utilizar otro tipo pero

50
00:05:18,780 --> 00:05:25,080
para utilizar un tipo string así que vamos a utilizar nuestra misma clase generica pero ahora va almacenar

51
00:05:25,110 --> 00:05:26,070
un tipo string

52
00:05:29,490 --> 00:05:31,260
definimos la variable objeto string

53
00:05:34,190 --> 00:05:41,860
y con la misma clase genérica en lugar de pasarle un interior ahora le vamos a pasar una string simplemente

54
00:05:41,860 --> 00:05:42,970
con algún valor.

55
00:05:43,060 --> 00:05:50,350
En este caso el valor de prueba con nuestra variable objeto string mandamos a llamar el método a obtener

56
00:05:50,350 --> 00:05:56,020
tiempo para comprobar el tipo que está almacenado en nuestra clase generica damos clic derecho y ejecutamos

57
00:05:59,090 --> 00:06:07,660
y podemos ver que en ese segundo caso el tipo T de la clase generica es de tipo string sin embargo una

58
00:06:07,660 --> 00:06:12,140
restricción que tienen los tipos genéricos es que no pueden ser aplicados a tipos primitivos.

59
00:06:12,190 --> 00:06:19,020
Por ejemplo si queremos hacer lo siguiente clase genérica y tratamos de aplicarle un tipo primitivo.

60
00:06:19,150 --> 00:06:20,050
Esto no es posible

61
00:06:23,380 --> 00:06:25,240
vamos a completar la sintaxis

62
00:06:30,100 --> 00:06:37,360
y podemos ver que nos marca el error tipo inesperado se requiere una referencia es decir una clase de

63
00:06:37,360 --> 00:06:42,080
tipo O bien y se encontró un tipo primitivo un entero.

64
00:06:42,080 --> 00:06:47,300
Por lo tanto esto no es posible es una de las restricciones que tenemos cuando utilizamos clases genéricas

65
00:06:48,340 --> 00:06:55,890
así que vamos a poner entre comentarios esta sintaxis simplemente para que sepan que no es posible utilizar

66
00:06:55,890 --> 00:06:57,210
tipos primitivos

67
00:07:00,210 --> 00:07:06,410
en clases genéricas por ello fue que en el primer ejemplo utilizamos la clase integral aunque le pasamos

68
00:07:06,410 --> 00:07:07,690
un valor primitivo.

69
00:07:07,760 --> 00:07:14,570
Realmente el valor que se está almacenando es de tipo integral es decir de tipo obvie así que eso es

70
00:07:14,600 --> 00:07:19,640
todo por esta lección de tipos genéricos y en la siguiente elección vamos a ver cómo manejar colecciones

71
00:07:19,820 --> 00:07:25,130
de tipo genéricas y allí vamos a seguir poniendo a prueba el uso de clases genéricas.

72
00:07:25,340 --> 00:07:26,720
Nos vemos en el siguiente vídeo.

73
00:07:26,780 --> 00:07:27,380
Saludos.
