Saltar navegación

20251023 JAXB_3 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 26 de octubre de 2025 por Raquel G.

12 visualizaciones

Descargar la transcripción

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
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
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid