20251023 JAXB_3 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, venga, pues entonces, ¿dónde están los nodos, los subnodos de los cuales queremos alterar el orden? Están dentro de receta. Pues vámonos a la clase receta. Vámonos a la clase receta y en la clase receta vamos a poner esta anotación.
00:00:00
Uy, esto no quería yo
00:00:20
Vamos a poner esta anotación
00:00:23
XML
00:00:26
Esto nunca me acuerdo
00:00:27
Porque estoy casi segura que no es así
00:00:32
Yo digo que sí
00:00:34
No, no
00:00:38
XML
00:00:41
Era X
00:00:42
Ah, vale
00:00:45
Y orden era la propiedad
00:00:47
Vale, a ver, vamos a hacer un esfuerzo de memoria
00:00:49
import, bien, muy bien
00:00:51
vale, esta es la anotación
00:00:56
y ahora esta anotación
00:00:58
tiene una propiedad
00:01:00
que creo que es
00:01:01
esta
00:01:04
orden de las propiedades
00:01:05
vale, y aquí ya ponemos
00:01:09
el orden que queremos
00:01:12
entonces, ¿qué queremos que aparezca primero?
00:01:14
esto se pone
00:01:16
entre llaves
00:01:17
No, no, no, porque son los subnodos
00:01:20
Solo, aquí no hay árbol, son los subnodos
00:01:27
Luego si quieres cambiar el orden
00:01:29
A los subnodos a su vez
00:01:31
De otro subnodo, te vas a la clase de ese
00:01:33
¿Vale?
00:01:35
Vale, entonces queremos primero nombre
00:01:37
Luego hemos dicho que queremos ver si es
00:01:39
Vegetariana
00:01:41
Luego queremos
00:01:44
hija mía
00:01:47
son nueve letras o diez
00:01:50
por favor
00:01:52
vegetariana
00:01:53
luego queremos
00:01:55
la dificultad en el tributo
00:01:58
luego queremos los ingredientes
00:02:00
en las variables
00:02:03
no en el nombre del nodo
00:02:08
porque se podrían llamar
00:02:09
distinto
00:02:12
si el string no se llama nombre
00:02:13
se llama nom
00:02:15
el nombre de la propiedad
00:02:16
si eso es algo que por alguna razón
00:02:19
tengo un bloqueo y siempre viene la duda
00:02:20
pero esta vez
00:02:23
creo que ya ni siquiera vamos a tener que resolver
00:02:25
que es el nombre de la propiedad, pero lo vamos a comprobar
00:02:27
ahora mismo en cuanto lo generemos
00:02:29
bueno, claro
00:02:30
si la propiedad se llama name, pues name
00:02:35
aquí
00:02:36
tiene que ser el nombre de la propiedad
00:02:38
aunque luego en el nodo
00:02:43
reciba otro nombre porque tú con xml
00:02:45
name lo has cambiado
00:02:47
vale, si tú con el name lo has cambiado
00:02:48
da igual, pero aquí el nombre de la propiedad
00:02:51
claro, no hay confusión
00:02:53
no hay ambigüedad
00:02:55
y después de ingredientes habíamos puesto
00:02:56
infonutricional, y si os he dicho algo malo
00:02:58
o me he equivocado, va a salir ahora
00:03:01
nos has engañado
00:03:02
puede ser, pero es que
00:03:05
yo prefiero hacerlo así
00:03:07
a mirar las chuletas, porque
00:03:09
las mismas dudas que pueden surgir a mi
00:03:11
lo mismo son los que puedo cometer,
00:03:13
pues son los que os pueden surgir a otros
00:03:14
cuando estáis trabajando.
00:03:16
De verdad.
00:03:18
Que sí, que voy, que voy, que estaba en ello.
00:03:20
Ay, de verdad.
00:03:22
¿Y la dificultad?
00:03:25
La dificultad es que es un atributo.
00:03:26
¿Vale?
00:03:28
Entonces, vale, ahora vamos a volver a ejecutar el main
00:03:29
a ver si me ha cambiado o me da un error
00:03:33
porque aquí os he dicho que va el nombre de la propiedad
00:03:35
cuando va el del elemento.
00:03:37
Vamos a ver.
00:03:40
¿Da error?
00:03:42
¿Qué os habré dicho mal? A mí no me da error. A ver, vámonos a recetario. Replace. Receta, nombre, vegetariana, ingredientes e infonutricional. Magnífico. Pues todas las anotaciones que necesitamos, prácticamente todas, las tenemos.
00:03:43
Entonces, hay una que es básica también que no hemos incorporado aquí. Nosotros hemos dicho que nosotros, esta la idea de JaxB es que tú tengas tu modelo de datos con tus clases que sirven para mil cosas y luego además las anotes para el XML.
00:04:09
Pero claro, a lo mejor el XML no necesita todos los datos. Entonces, ¿tiene que ir al XML todos los datos? Pues no, por ejemplo, imaginémonos que el XML le da igual la info nutricional.
00:04:28
es una información interesante para el resto de la aplicación
00:04:45
para la parte de la base de datos
00:04:49
pero el xml eso no lo queremos
00:04:50
registrar, porque el xml
00:04:53
vale para otras cosas
00:04:55
que no necesitan infonutricional
00:04:56
tal y como lo hemos visto
00:04:58
es que va a ir todo ahí
00:05:00
pues si un atributo
00:05:01
queremos que JaxB lo ignore
00:05:05
lo hacemos transitorio
00:05:07
que se llama, entonces en este caso
00:05:09
por ejemplo, si quisiéramos hacer transitorio
00:05:10
la infonutricional que está en receta
00:05:13
Pues la info nutricional
00:05:15
La anotamos
00:05:17
En su get que está aquí
00:05:18
La anotamos con
00:05:20
Transient
00:05:23
La anotamos con transitorio
00:05:25
Porque si no le pusiéramos nada
00:05:36
Recordad que si yo no le pongo nada
00:05:38
Por defecto es como tener un xml element
00:05:40
Por defecto si no le ponemos nada
00:05:43
Entonces se iría al xml
00:05:45
Se iría
00:05:47
Entonces si no quiero que vaya al xml
00:05:48
Es decir que sea ignorada
00:05:50
Que para ellas sea como si esta
00:05:52
anotación no existiera y la ignorara
00:05:54
pues tengo que ponerle el transi en este
00:05:57
y ya está, entonces si volvemos a hacer
00:05:58
el main con esto de aquí
00:06:01
tienes que cambiar
00:06:03
¿qué tengo que cambiar?
00:06:04
ah, perdón, porque se me ha dado un error, efectivamente
00:06:06
efectivamente
00:06:09
claro, que la ignore
00:06:10
que no la ponga en el xml
00:06:13
bueno, pues porque
00:06:14
estas clases de aquí podrían formar parte
00:06:19
de tu aplicación, de tu modelo de datos
00:06:21
que hace un montón de cosas
00:06:23
Y una de las funcionalidades puede ser, y además guárdame un XML, pero puede ser que no te interese todo. O sea, Info Nutricional igual afecta a otras partes de la aplicación. Pero en la parte del XML no, porque el XML es para Pepito, que la Info Nutricional le da lo mismo. ¿Vale?
00:06:24
Entonces
00:06:38
Efectivamente
00:06:41
Bien apuntado
00:06:42
Por Medina
00:06:44
Si yo he quitado
00:06:47
Le digo a Jax B que la ignore
00:06:50
La tengo que quitar de aquí
00:06:51
Porque si no Jax B me va a decir
00:06:53
Uy, y esta
00:06:55
Como que la coloque, pero si esa me has dicho que pase de ella
00:06:57
Entonces
00:07:00
Claro
00:07:01
La tendríamos que
00:07:03
Quitar de aquí
00:07:05
y ahora
00:07:08
ya sí, nos hacemos nuestro
00:07:10
main
00:07:12
la infonutricional pasada
00:07:13
¿vale? ¿cómo?
00:07:20
claro, ya no sale, ya
00:07:29
para JacksBear no existe
00:07:30
lo único es eso, que si hemos hecho referencia
00:07:32
a ella en otras anotaciones
00:07:35
como por ejemplo esta
00:07:37
pues tienes que quitarla también, porque si no
00:07:38
se va a volver loca
00:07:41
bueno, pues
00:07:42
escribir
00:07:46
a un JAXB
00:07:48
ya sabemos que sería, una vez que están
00:07:50
las anotaciones correctamente hechas
00:07:52
pues sería
00:07:55
hacer esto
00:07:57
pero también puede ocurrir que queramos
00:07:58
lo contrario, tenemos el XML
00:08:00
que es nuestra fuente de datos y queremos cargarlo
00:08:02
a clases
00:08:04
bueno, pues entonces en lugar de un
00:08:05
Marshall tenemos que hacer un Marshall
00:08:08
entonces prueba anotaciones
00:08:10
en lugar de un Marshall tenemos que hacer
00:08:12
un Marshall
00:08:14
Un Marshall
00:08:15
Le he dicho un dos veces
00:08:17
¿Por qué no lo he dicho en correcto en inglés?
00:08:18
Vale, entonces tenéis que hacer un a Marshall
00:08:20
Y
00:08:23
Ahora se entiende mejor, ¿verdad?
00:08:25
Claro
00:08:27
Vale, pues entonces vamos a hacer un método
00:08:28
Aquí
00:08:31
Que sea
00:08:32
Que me devuelve
00:08:34
Un objeto recetario
00:08:37
Y que me lee el XML
00:08:39
Al que yo le paso
00:08:44
Un file, bueno como somos
00:08:46
Para perderle miedo al pad
00:08:49
Que parece que le tenemos miedo
00:08:51
Bueno, vosotros ya sé que no
00:08:52
Vamos a pasarle el fichero en modo pad
00:08:53
No en file, que estamos tan
00:08:56
Acostumbradísimos al file
00:08:58
Que ya no nos genera retos, pero el pad no genera
00:09:00
Más retos, pero no sabemos los métodos
00:09:02
Venga
00:09:04
Pad de Java Neo
00:09:06
Para que se quite el rojito que nos da mal rollo
00:09:08
Bueno, antes de hacer este método
00:09:16
No me he parado lo suficiente
00:09:19
en una palabra
00:09:21
que me encantan las palabras
00:09:22
como bien sabéis
00:09:25
que es en la palabra
00:09:26
transient
00:09:28
esta palabra a nosotros
00:09:30
nos afecta muchísimo como concepto general
00:09:35
nosotros estamos haciendo
00:09:37
un módulo de acceso a datos
00:09:39
que es lo que queremos
00:09:41
que nuestros objetos sean persistentes
00:09:42
esa palabra ya no suena
00:09:45
persistente es que lo que hagamos
00:09:47
se refleje
00:09:49
normalmente en la base de datos
00:09:50
pero podría ser en ficheros, como ya vemos.
00:09:53
Pero claro, no siempre queremos que todo sea persistente.
00:09:57
En una aplicación convivirán objetos persistentes
00:10:01
y tienen que convivir con objetos no persistentes,
00:10:05
que no son necesarios reflejarlos en la base de datos,
00:10:08
que su estado se refleje, que existan, que no es necesario.
00:10:12
Y la aplicación lo necesita igualmente.
00:10:15
Entonces, esos son los objetos que llamamos transitorios.
00:10:17
Entonces la notación transient en general la usan muchos frameworks para indicar esta idea, este objeto no forma parte del contexto de la persistencia, el contexto de persistencia de una aplicación en general es todo eso que va a persistir, es decir, todo eso que se va a crear en la base de datos, ese es el contexto de persistencia, todo lo que va a persistir, pero habrá objetos fuera de él.
00:10:20
Y entonces el framework de persistencia, el que se encarga de hacer esa conexión,
00:10:50
ese framework tiene que saber que está dentro del contexto y que no.
00:10:55
Pues lo que estará fuera del contexto es lo transitorio y para cada framework,
00:10:59
habrá alguna forma de anotarlo, pero transient es como la palabra clave para indicar eso.
00:11:03
Bueno, pues con esto estamos haciendo que el objeto infonutricional, este objeto,
00:11:12
esté fuera del contexto de persistencia
00:11:18
de nuestra aplicación
00:11:21
no vale xml, ni has leído el xml
00:11:22
ni nada
00:11:25
ahora, volviendo a nuestro main
00:11:25
para leer de un xml, vale
00:11:28
pues aquí
00:11:30
otra vez nos ponemos en el copia y pega
00:11:32
en lugar de un marshal, un marshal
00:11:34
un marshal
00:11:37
vale, entonces
00:11:38
aquí
00:11:39
el jacksbcontext
00:11:43
lo tengo que hacer igual
00:11:46
pero
00:11:48
en lugar de un
00:11:49
marshaller, tendré que hacer
00:11:52
un unmarshaller
00:11:54
a ver, marshall es
00:11:56
de objetos
00:12:01
a fichero
00:12:02
y al unmarshall, tú tienes
00:12:04
un fichero y quieres
00:12:06
crear el conjunto de objetos
00:12:08
con los datos que haya en ese fichero
00:12:11
unmarshall es leer
00:12:13
del fichero y llevar a los objetos
00:12:14
correspondientes. Marshall es
00:12:16
escribir en el fichero
00:12:18
a partir de la información de los objetos.
00:12:20
Vale.
00:12:23
Un try.
00:12:27
Un try.
00:12:29
Vale. Normalmente
00:12:31
uno
00:12:44
propaga
00:12:47
los errores propios de la
00:12:48
aplicación. Es decir,
00:12:51
si yo concibo como error propio
00:12:53
que mi XML
00:12:55
en lugar de
00:12:56
recetario
00:12:59
se llame recetarios
00:13:01
o yo que sé, o cualquier cosa
00:13:04
me refiero, hay errores
00:13:05
que son errores de que
00:13:07
algo funciona mal para todo el mundo
00:13:09
o sea, si se ha roto el Marshaler
00:13:11
porque se ha roto el disco
00:13:13
duro, si
00:13:15
ha fallado algo porque ha fallado la RAM
00:13:17
hay errores o excepciones
00:13:19
que son generales
00:13:21
que no son específicas
00:13:24
de mi aplicación, entonces
00:13:25
esas como principio básico
00:13:27
uno las mete en try-catch, no las va propagando
00:13:29
hacia arriba, porque entonces
00:13:31
mira que le está dificultando la vida
00:13:33
al que use nuestros métodos
00:13:35
entonces, ¿qué excepciones
00:13:36
propagamos? las que son
00:13:39
avisos propios nuestros de nuestras
00:13:41
cosas, yo quiero que
00:13:43
sea un error si me metes
00:13:45
una edad menor de 18
00:13:47
eso no es un error del mundo
00:13:49
puede vivir, la gente menor de edad vive y no le pasa
00:13:51
nada, pero en mi aplicación
00:13:53
si quiero que eso sea un problema
00:13:55
pues entonces me hago mi excepción
00:13:58
y la propago y aviso que eso es un problema
00:14:00
propio, entonces más o menos
00:14:02
suelen ser los criterios
00:14:04
que seguimos, entonces esta no la
00:14:06
propagaríamos porque esto es un error
00:14:08
que yo no quiero que aparezca
00:14:10
no quiero
00:14:12
porque no indica nada, no está avisando de nada
00:14:13
no está avisando al usuario de que has metido
00:14:16
una edad menor de 18
00:14:18
no está avisando de nada mío
00:14:20
es un error que puede salir con el que tengo que contar
00:14:21
y que yo me lo tengo que guisar y comer
00:14:24
no voy a andar propagando para arriba
00:14:26
¿Vale?
00:14:27
Entonces, esto, en lugar de un
00:14:29
Marshaller
00:14:31
Pues como lo que queremos es hacer un
00:14:32
Unmarshall, pues aquí crearíamos
00:14:35
Un unmarshaller
00:14:37
Y de nuevo
00:14:39
No sé si
00:14:41
Lo estaré
00:14:44
Si no me dice import, sí, he acertado
00:14:46
Vale, y ahora
00:14:49
Este, ¿qué tiene que hacer?
00:14:53
Pues el unmarshall
00:14:55
Y a recetario
00:14:57
al objeto recetario resultante
00:14:59
que vamos a ponerle por aquí
00:15:03
recetario que inicialmente es null
00:15:06
y que es el que vamos a devolver
00:15:13
a este de aquí pues ahora
00:15:15
le vamos a asignar el resultado ahora ya si
00:15:21
de hacer el
00:15:25
Perdón
00:15:28
Punto
00:15:29
AppMarshal
00:15:34
Vaya
00:15:37
Para una vez que uso file
00:15:39
Pues no, en AppMarshal necesito un objeto
00:15:41
Pad, necesito un objeto file
00:15:43
Entonces
00:15:45
Sí
00:15:46
Supongo que sí
00:15:48
Mira, mira que pregunta, vamos a buscar a ver si
00:15:50
Vale, vamos a ver si un objeto
00:15:53
Pad tiene un, seguramente
00:15:55
Tenga, ¿verdad?
00:15:57
Tu file, perfecto
00:15:59
Y esto seguramente ahora tenga aquí una...
00:16:01
No, he cogido el que me ofrece y me lo ha ofrecido sin ser...
00:16:07
Sí, que he elegido mal este nombre, lo reconozco, porque se ha quedado un poco feo.
00:16:14
¿Ayer qué pasó?
00:16:22
Que también he elegido mal el nombre, ¿me estás queriendo decir?
00:16:25
A ver...
00:16:30
No, solo tiene una.
00:16:32
Bueno, pero ese lo elegí yo
00:16:37
Ya, vale
00:16:40
Vamos, que lo he hecho
00:16:41
Que lo he elegido fatal dos veces
00:16:44
Bueno, si total vais a hacer
00:16:46
Como de esto
00:16:51
Es de lo que vais a hacer el copia y pega
00:16:52
Vale
00:16:54
Pues entonces, ya está
00:16:56
Vamos ahora
00:16:59
A probar en nuestro main
00:17:02
No, porque este no genera
00:17:04
O sea, este lo que va a hacer va a ser ignorar todos los tabuladores y espacios directamente.
00:17:10
O sea, este va a ir cogiendo las etiquetas con los nodos.
00:17:15
Y todo lo que necesite filtrar lo va a filtrar.
00:17:18
El otro es que escribía.
00:17:22
Entonces, ahí sí que tenemos que decirle, quiero que escribas espacios, quiero que no los escribas.
00:17:23
Pero este va leyendo y va eliminando todo lo que le sobre.
00:17:27
entonces
00:17:30
vamos a ver
00:17:32
vamos a cambiar ahora un poquito
00:17:38
el fichero
00:17:42
para ver si lo lee correctamente
00:17:44
recetario
00:17:46
lo vamos a sacar de
00:17:48
leer xml
00:17:50
y el pad
00:17:52
se creaba con get
00:17:54
y ahora
00:17:57
aquí poníamos
00:17:58
la ruta
00:18:00
que la ruta
00:18:02
La sacamos
00:18:04
De aquí
00:18:08
Copiar ruta de acceso
00:18:11
Ay, si hubiera puesto
00:18:18
Comillas
00:18:23
Me habría puesto ya la doble barra
00:18:24
Tengo que poner la mano
00:18:26
Vale
00:18:27
Ala
00:18:35
Ya está y el punto y coma
00:18:37
Vale
00:18:40
¿Puede ser si ya recetario y minuto?
00:18:45
¿La clase recetario?
00:18:48
No, no, no
00:18:50
Bueno, esta es mi ruta
00:18:50
Tú la que tengas tú
00:18:54
Ah, sí, sí, claro
00:18:55
El nombre del fichero
00:18:59
Y ahora, bueno, vamos a comprobar
00:19:00
Imprimiendo cualquier cosa
00:19:07
Que sí que lo ha hecho
00:19:08
Vamos a coger
00:19:11
De la lista de recetas
00:19:12
La primera de ellas
00:19:15
Bueno, no
00:19:17
A ver
00:19:20
Como podemos escribir rápidamente
00:19:20
Esto
00:19:24
Pero es que somos un poco tontos
00:19:24
Recetario
00:19:27
Punto
00:19:29
Get recetas
00:19:30
Punto stream
00:19:32
Me da las recetas
00:19:35
Y que vamos a querer mostrar de las recetas
00:19:37
Venga
00:19:40
Que nos apetece mostrar de las recetas
00:19:41
Que es vegetariana
00:19:43
De las recetas
00:19:46
Vamos
00:19:48
las vegetarianas porque somos todos muy
00:19:49
vegetarianos
00:19:51
y luego mostramos los nombres de todas ellas
00:19:52
no, es que ahora voy a hacer copia y pega
00:19:55
en el fichero voy a poner muchas
00:19:59
con copia y pega
00:20:00
vamos a
00:20:01
mostrar las vegetarianas
00:20:03
porque somos muy pijos
00:20:06
vegetarianas
00:20:08
a elegir
00:20:11
para elegir, mostrar nombre
00:20:13
de vegetarianas
00:20:16
entonces, aquí ya tengo la lista
00:20:17
de recetas, aquí ya los que
00:20:20
decían que todavía se hacían un lío
00:20:22
¿qué
00:20:24
método pongo ahí?
00:20:25
para quedarme con las, tengo en mi stream
00:20:28
tiene ya la lista de recetas
00:20:30
me quiero quedar solamente
00:20:31
con las que sean
00:20:34
vegetarianas
00:20:36
filter, muy bien
00:20:37
para filtrar eso
00:20:40
exacto, vamos a ver
00:20:42
punto
00:20:44
filter, me voy a quedar
00:20:46
con cuáles, con aquellas
00:20:48
recetas que hagan
00:20:50
exacto, que hagan true este
00:20:52
boolean
00:20:54
x.vegetariana
00:20:54
isvegetariana, porque ya está
00:20:58
isvegetariana ya es el
00:21:00
boolean, pues venga
00:21:02
estas de aquí, y que queremos
00:21:04
hacer con estas, ahora
00:21:06
ya mostrar el nombre, entonces
00:21:08
pues
00:21:10
a todas estas le hacemos un
00:21:11
for each, claro luego el siso con los
00:21:14
Exacto, le hacemos un
00:21:16
De cada una de ellas
00:21:19
No, a ver
00:21:23
Porque yo no quiero mostrar
00:21:25
Toda la receta, quiero mostrar solo el nombre
00:21:26
Entonces for each system.out.println
00:21:29
Lo que haría sería
00:21:31
Mostrarme el toString de receta, ¿verdad?
00:21:32
Es decir, si hacemos esto
00:21:35
Claro
00:21:37
Vale
00:21:40
System
00:21:44
que mala es la edad
00:21:46
vale, si yo hago esto
00:21:51
ya sabéis que esta es la
00:21:53
abreviatura de hacer
00:21:55
este método o cualquier otro
00:21:57
podría ser cualquier otro, con todo
00:21:59
el objeto completo, con todo
00:22:01
todo el objeto cual es
00:22:02
el objeto receta entero, luego me mostraría
00:22:05
el tuestrín de receta
00:22:07
si no tengo un tuestrín en receta
00:22:08
pues venga, vamos a ponerle un tuestrín en receta
00:22:10
y ya le pasan todos
00:22:13
no, no hace falta
00:22:19
Vale, un stream en receta que muestre solamente la dificultad del nombre y si es vegetariana.
00:22:22
Aunque he dicho mostrar solo el nombre, bueno.
00:22:30
Vale, ya tiene el toStream.
00:22:34
Entonces, ahora ya sí me mostrará los datos de las vegetarianas.
00:22:37
Solamente.
00:22:44
Siempre y cuando yo haya hecho bien las anotaciones y por tanto la lectura la haga bien.
00:22:45
Entonces
00:22:52
Ay, que es que ni he hecho ni copias
00:22:53
O sea, funciona
00:22:59
Pero poca cosa estoy viendo
00:23:01
Porque solamente he hecho una receta
00:23:03
Voy a copiar
00:23:05
Si es que iba a copiar y pegar, pero se me ha olvidado
00:23:08
Entonces
00:23:09
Vamos a hacer
00:23:11
Otro bollo
00:23:13
Vamos a hacer
00:23:14
Una tarta
00:23:24
Y esta no es vegetariana
00:23:25
¿Vale? Cuidado que aquí solo puedo poner
00:23:29
True y false, porque
00:23:36
lo he declarado como boolean
00:23:38
vale, entonces los únicos posibles valores
00:23:39
de boolean son true y false
00:23:42
no puedo de repente cambiarlo
00:23:43
y decir si y no, si cambio y digo si y no
00:23:46
tendría que cambiar la propiedad a string
00:23:48
y a partir de ahí a trabajar
00:23:50
vale, entonces
00:23:52
vale, pues me ha filtrado
00:23:54
el bollo, efectivamente
00:24:02
porque la tarta no es vegetariana
00:24:03
vale, entonces
00:24:05
espera que lo bajo aquí abajo
00:24:07
vale
00:24:09
si no me gustara
00:24:19
el toString porque
00:24:21
muchas de estas clases yo no puedo andarlas
00:24:23
tocando y ponerlas a mi gusto
00:24:26
entonces a lo mejor el toString
00:24:28
no me gusta
00:24:29
y yo quiero en esta funcionalidad
00:24:31
en concreto y solo en esta
00:24:34
mostrar solo el nombre
00:24:35
y no puedo cambiar el toString porque entonces
00:24:37
estoy tocando una entidad del modelo
00:24:39
que no debería, pues lo único que cambia
00:24:41
es que este forEach no le puedo poner esto
00:24:44
Que tendría que poner otra cosa
00:24:45
Que le pondríamos
00:24:47
Claro
00:24:49
Que pondríamos en lugar de esto
00:24:51
Que llamaría alto string
00:24:53
En lugar de esto, pues haríamos
00:24:55
En lugar de vaguear con el operador dos puntos
00:24:57
Haríamos
00:25:00
Para cada x
00:25:00
Me vas a mostrar
00:25:02
X punto
00:25:05
Nombre
00:25:07
Claro, el for each es
00:25:08
Con cada elemento
00:25:15
haz lo que vaya ahí
00:25:17
que puede ser una línea, pueden ser muchas
00:25:20
entonces
00:25:22
esto es cuando
00:25:24
si no está el getNombre
00:25:26
esto es lo que se puede
00:25:28
abreviar, claro que es lo anterior
00:25:30
pero claro
00:25:33
el parámetro del método que se ponga aquí
00:25:34
que puede ser el método que sea, el parámetro
00:25:36
tiene que ser esto mismo
00:25:38
si el parámetro es esto mismo lo podemos abreviar
00:25:39
a esto, pero si el parámetro
00:25:42
como es el caso, el parámetro
00:25:45
no es esto mismo, no lo puedo
00:25:46
abreviar, pues no pasa nada, lo pongo
00:25:48
completo. El for each me dice
00:25:50
para cada x, haz todo lo que
00:25:52
hay aquí. ¿Y qué hay? Pues nada,
00:25:55
un siso del nombre.
00:25:57
¿Vale?
00:25:59
Y así mostraríamos
00:26:01
solo
00:26:03
el bollito. ¿Y algo he hecho
00:26:03
mal?
00:26:07
Vale.
00:26:14
Y ahora lo...
00:26:20
Pues ya está. Solo esta.
00:26:24
entonces lo de un marshal y un marshal
00:26:25
es prácticamente siempre igual
00:26:32
claro, hacer marshal y un marshal es
00:26:34
esto
00:26:38
lo que está aquí
00:26:39
esto para mandarlo al fichero y esto para leer
00:26:41
entonces
00:26:44
la única complejidad está en poner bien
00:26:45
las anotaciones
00:26:48
pero ya veis que bueno
00:26:49
que es seguir una serie de reglas
00:26:51
y ya está
00:26:54
perdón
00:27:00
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Segundo Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 12
- Fecha:
- 26 de octubre de 2025 - 17:03
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 27′ 03″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 119.64 MBytes