{"id":869,"date":"2020-04-27T11:21:28","date_gmt":"2020-04-27T14:21:28","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=869"},"modified":"2020-04-27T11:25:21","modified_gmt":"2020-04-27T14:25:21","slug":"recursos-avancados-do-java-3","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/","title":{"rendered":"Recursos Avan\u00e7ados do Java #3"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#O_Metodo_filter_map_e_flatMap\" >O M\u00e9todo filter, map e flatMap<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#Extraindo_Substreams_e_Concatenando_Streams\" >Extraindo Substreams e Concatenando Streams<\/a><\/li><\/ul><\/nav><\/div>\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"O_Metodo_filter_map_e_flatMap\"><\/span><strong>O M\u00e9todo filter, map e flatMap<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Uma transforma\u00e7\u00e3o stream produz uma stream que tem elementos que s\u00e3o derivados de outros stream. A transforma\u00e7\u00e3o filter produz uma stream com esses elementos que se combinam com uma determinada condi\u00e7\u00e3o.<\/p>\n\n\n\n<p>Aqui, n\u00f3s transformamos uma stream de Strings dentro de outra stream que cont\u00e9m apenas palavras longas:<\/p>\n\n\n\n<p>List&lt;String&gt; listaDePalavras = &#8230;;<\/p>\n\n\n\n<p>Stream&lt;String&gt; palavrasLongas = listaDePalavras.stream().filter(w -&gt; w.length() &gt; 12);<\/p>\n\n\n\n<p>O argumento filter \u00e9 um Predicate&lt;T&gt; que \u00e9 uma fun\u00e7\u00e3o de T para boolean.<\/p>\n\n\n\n<p>Muitas vezes, voc\u00ea quer transformar valores de uma stream dentro de outra. Use o m\u00e9todo map e passe a fun\u00e7\u00e3o que cuida da transforma\u00e7\u00e3o. Por exemplo, voc\u00ea pode transformar todas as palavras para letras min\u00fasculas:<\/p>\n\n\n\n<p>Stream&lt;String&gt; palavrasMinusculas = listaDePalavras.stream().map(String::toLowerCase);<\/p>\n\n\n\n<p>Aqui, n\u00f3s utilizamos map como um m\u00e9todo de refer\u00eancia. Muitas vezes, uma express\u00e3o lambda \u00e9 utilizada:<\/p>\n\n\n\n<p>Stream&lt;String&gt; primeirasLetras = listaDePalavras.stream().map(s -&gt; s.substring(0,1));<\/p>\n\n\n\n<p>O resultado da stream cont\u00e9m as primeiras letras de todas as palavras.<\/p>\n\n\n\n<p>Quando voc\u00ea usa map, uma fun\u00e7\u00e3o \u00e9 aplicada para cada elemento, e o resultado \u00e9 uma nova stream com os resultados. Agora, suponha que voc\u00ea tem uma fun\u00e7\u00e3o que retorna n\u00e3o apenas um valor, mas uma stream de valores:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static Stream&lt;String> letras(String s){\n\tList&lt;String> resultado = new ArrayList&lt;>();\n\tfor(int I = 0; I &lt; s.length(); i++){\n\t\tresultado.add(s.substring(I, i+1));\n}\nreturn resultado.stream();\n}\n<\/code><\/pre>\n\n\n\n<p>Por exemplo, letras(\u201cbarco\u201d) \u00e9 uma stream [\u201cb\u201d, \u201ca\u201d, \u201cr\u201d, \u201cc\u201d, \u201co\u201d].<\/p>\n\n\n\n<p>Suponhamos que voc\u00ea utilize o map no m\u00e9todo letras:<\/p>\n\n\n\n<p>Stream&lt;Stream&lt;String&gt;&gt; resultado = listaDePalavras.stream().map(w -&gt; letras(w));<\/p>\n\n\n\n<p>Voc\u00ea poder\u00e1 ter uma stream de streams parecida como essa [&#8230;[\u201cs\u201d,\u201de\u201d,\u201du\u201d], [\u201cb\u201d, \u201ca\u201d, \u201cr\u201d, \u201cc\u201d, \u201co\u201d],&#8230;].<\/p>\n\n\n\n<p>Para transformar em uma stream de letras [&#8230;\u201ds\u201d,\u201de\u201d,\u201du\u201d, \u201cb\u201d, \u201ca\u201d, \u201cr\u201d, \u201cc\u201d, \u201co\u201d,&#8230;], utiliza o m\u00e9todo flatMap ao inv\u00e9s de map:<\/p>\n\n\n\n<p>Stream&lt;String&gt; ResultadoFlat = listaDePalavras.stream().flatMap(w -&gt; letras(w)); \/\/chama cada letra e nivela os resultados<\/p>\n\n\n\n<p>Nota: voc\u00ea ir\u00e1 encontrar o m\u00e9todo flatMap nas classes streams. \u00c9 um conceito geral na ci\u00eancia da computa\u00e7\u00e3o. Suponhamos que voc\u00ea tem um tipo gen\u00e9rico G (o qual \u00e9 a Stream) e fun\u00e7\u00f5es f do tipo T para G&lt;U&gt; e g de U para G&lt;V&gt;. Ent\u00e3o voc\u00ea pode compor, que primeiro aplica f e ent\u00e3o g, utilizando flatMap. Isso \u00e9 uma ideia da <a href=\"https:\/\/www.netmundi.org\/filosofia\/2018\/leibniz-monadas-estrutura-da-realidade\/\" target=\"_blank\" rel=\"noreferrer noopener\">teoria das m\u00f4nadas<\/a>. Mas n\u00e3o se preocupe, voc\u00ea pode usar flatMap sem saber sobre m\u00f4nadas.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Extraindo_Substreams_e_Concatenando_Streams\"><\/span><strong>Extraindo Substreams e Concatenando Streams<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>A chamada stream.limit(n) retorna uma nova stream que termina depois de n elementos (ou quando a stream original termina, se for curta). Esse m\u00e9todo \u00e9 particularmente \u00fatil para cortar infinitos streams at\u00e9 chegar ao tamanho. Por exemplo,<\/p>\n\n\n\n<p>Stream&lt;Double&gt; randoms = Stream.generate(Math::random).limit(100);<\/p>\n\n\n\n<p>Produz um fluxo de 100 n\u00fameros aleat\u00f3rios.<\/p>\n\n\n\n<p>A chamada stream.skip(n) faz o oposto: Descarta o primeiro n elementos. Isso \u00e9 \u00fatil ao dividir texto em palavras, assim que funciona o m\u00e9todo split, o primeiro elemento \u00e9 indesejado em uma string vazia. E isso que faz o skip:<\/p>\n\n\n\n<p>Stream&lt;String&gt; palavras = Stream.of(contents.split(<a href=\"file:\/\/PL+)).skip(1\">\\\\PL+)).skip(1<\/a>);<\/p>\n\n\n\n<p>Voc\u00ea pode concatenar duas streams com o m\u00e9todo static concat da classe Stream:<\/p>\n\n\n\n<p>Stream&lt;String&gt; combinado = Stream.concat(letras(\u201cOl\u00e1\u201d), letras(\u201cMundo\u201d)); \/\/produz a stream [\u201cO\u201d,\u201dl\u201d,\u201d\u00e1\u201d,\u201dM\u201d,\u201du\u201d,\u201dn\u201d,\u201dd\u201d,\u201do\u201d]<\/p>\n\n\n\n<p>Claro que a primeira stream n\u00e3o deve ser infinita, sendo que a segunda nunca ter\u00e1 uma chance.<\/p>\n\n\n\n<p>Fonte: Core Java, Volume II&#8211;Advanced Features 10 edition<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O M\u00e9todo filter, map e flatMap Uma transforma\u00e7\u00e3o stream produz uma stream que tem elementos que s\u00e3o derivados de outros stream. A transforma\u00e7\u00e3o filter produz uma stream com esses elementos que se combinam com uma determinada condi\u00e7\u00e3o. Aqui, n\u00f3s transformamos uma stream de Strings dentro de outra stream que cont\u00e9m apenas palavras longas: List&lt;String&gt; listaDePalavras [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":293,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-869","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.5 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Recursos Avan\u00e7ados do Java #3 - Viciados em Aprender<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recursos Avan\u00e7ados do Java #3\" \/>\n<meta property=\"og:description\" content=\"O M\u00e9todo filter, map e flatMap Uma transforma\u00e7\u00e3o stream produz uma stream que tem elementos que s\u00e3o derivados de outros stream. A transforma\u00e7\u00e3o filter produz uma stream com esses elementos que se combinam com uma determinada condi\u00e7\u00e3o. Aqui, n\u00f3s transformamos uma stream de Strings dentro de outra stream que cont\u00e9m apenas palavras longas: List&lt;String&gt; listaDePalavras [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Viciados em Aprender\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-27T14:21:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-27T14:25:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/java-avancado.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"blackzig\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"blackzig\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/\"},\"author\":{\"name\":\"blackzig\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"headline\":\"Recursos Avan\u00e7ados do Java #3\",\"datePublished\":\"2020-04-27T14:21:28+00:00\",\"dateModified\":\"2020-04-27T14:25:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/\"},\"wordCount\":599,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"image\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/java-avancado.jpg\",\"articleSection\":[\"Java\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/\",\"name\":\"Recursos Avan\u00e7ados do Java #3 - Viciados em Aprender\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/java-avancado.jpg\",\"datePublished\":\"2020-04-27T14:21:28+00:00\",\"dateModified\":\"2020-04-27T14:25:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#primaryimage\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/java-avancado.jpg\",\"contentUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/java-avancado.jpg\",\"width\":1600,\"height\":1600,\"caption\":\"Recursos Avan\u00e7ados do Java\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/recursos-avancados-do-java-3\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Recursos Avan\u00e7ados do Java #3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/\",\"name\":\"Viciados em Aprender\",\"description\":\"Queremos aprender tudo o que for poss\u00edvel nesta vida.\",\"publisher\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\",\"name\":\"blackzig\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"contentUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"blackzig\"},\"logo\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.micheladrianomedeiros.com.br\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Recursos Avan\u00e7ados do Java #3 - Viciados em Aprender","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/","og_locale":"pt_PT","og_type":"article","og_title":"Recursos Avan\u00e7ados do Java #3","og_description":"O M\u00e9todo filter, map e flatMap Uma transforma\u00e7\u00e3o stream produz uma stream que tem elementos que s\u00e3o derivados de outros stream. A transforma\u00e7\u00e3o filter produz uma stream com esses elementos que se combinam com uma determinada condi\u00e7\u00e3o. Aqui, n\u00f3s transformamos uma stream de Strings dentro de outra stream que cont\u00e9m apenas palavras longas: List&lt;String&gt; listaDePalavras [&hellip;]","og_url":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/","og_site_name":"Viciados em Aprender","article_published_time":"2020-04-27T14:21:28+00:00","article_modified_time":"2020-04-27T14:25:21+00:00","og_image":[{"width":1600,"height":1600,"url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/java-avancado.jpg","type":"image\/jpeg"}],"author":"blackzig","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"blackzig","Tempo estimado de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#article","isPartOf":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/"},"author":{"name":"blackzig","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"headline":"Recursos Avan\u00e7ados do Java #3","datePublished":"2020-04-27T14:21:28+00:00","dateModified":"2020-04-27T14:25:21+00:00","mainEntityOfPage":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/"},"wordCount":599,"commentCount":0,"publisher":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"image":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#primaryimage"},"thumbnailUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/java-avancado.jpg","articleSection":["Java"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/","name":"Recursos Avan\u00e7ados do Java #3 - Viciados em Aprender","isPartOf":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#primaryimage"},"image":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#primaryimage"},"thumbnailUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/java-avancado.jpg","datePublished":"2020-04-27T14:21:28+00:00","dateModified":"2020-04-27T14:25:21+00:00","breadcrumb":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#primaryimage","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/java-avancado.jpg","contentUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/java-avancado.jpg","width":1600,"height":1600,"caption":"Recursos Avan\u00e7ados do Java"},{"@type":"BreadcrumbList","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/recursos-avancados-do-java-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/micheladrianomedeiros.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Recursos Avan\u00e7ados do Java #3"}]},{"@type":"WebSite","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#website","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/","name":"Viciados em Aprender","description":"Queremos aprender tudo o que for poss\u00edvel nesta vida.","publisher":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/micheladrianomedeiros.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":["Person","Organization"],"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e","name":"blackzig","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","contentUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","width":1920,"height":1080,"caption":"blackzig"},"logo":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg"},"sameAs":["http:\/\/www.micheladrianomedeiros.com.br\/"]}]}},"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=869"}],"version-history":[{"count":2,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/869\/revisions"}],"predecessor-version":[{"id":872,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/869\/revisions\/872"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/293"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}