{"id":177,"date":"2025-01-13T00:20:13","date_gmt":"2025-01-13T03:20:13","guid":{"rendered":"https:\/\/devandroid.com.br\/?p=177"},"modified":"2025-01-13T11:03:24","modified_gmt":"2025-01-13T14:03:24","slug":"null-safety-seguranca-nula","status":"publish","type":"post","link":"https:\/\/devandroid.com.br\/index.php\/2025\/01\/13\/null-safety-seguranca-nula\/","title":{"rendered":"Null safety (Seguran\u00e7a nula)"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">A seguran\u00e7a nula \u00e9 um recurso do Kotlin projetado para reduzir significativamente o risco de refer\u00eancias nulas, tamb\u00e9m conhecido como erro de um bilh\u00e3o de d\u00f3lares.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma das armadilhas mais comuns em muitas linguagens de programa\u00e7\u00e3o, incluindo Java, \u00e9 que acessar um membro de uma refer\u00eancia nula resulta em uma exce\u00e7\u00e3o de refer\u00eancia nula. Em Java, isso seria o equivalente a um <strong><u>NullPointerException<\/u><\/strong>, ou um NPE para abreviar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Kotlin oferece suporte expl\u00edcito \u00e0 nulidade como parte de seu sistema de tipos, o que significa que voc\u00ea pode declarar explicitamente quais vari\u00e1veis ou propriedades podem ser <strong><u>null<\/u><\/strong>. Al\u00e9m disso, quando voc\u00ea declara vari\u00e1veis n\u00e3o nulas, o compilador imp\u00f5e que essas vari\u00e1veis n\u00e3o podem conter um valor <strong><u>null<\/u><\/strong>, impedindo um NPE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A seguran\u00e7a nula do Kotlin garante um c\u00f3digo mais seguro, detectando poss\u00edveis problemas relacionados a nulos em tempo de compila\u00e7\u00e3o, em vez de tempo de execu\u00e7\u00e3o. Esse recurso melhora a robustez, a legibilidade e a capacidade de manuten\u00e7\u00e3o do c\u00f3digo, expressando explicitamente valores <strong><u>null<\/u><\/strong>, tornando o c\u00f3digo mais f\u00e1cil de entender e gerenciar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As \u00fanicas causas poss\u00edveis de um NPE em Kotlin s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uma chamada expl\u00edcita para&nbsp;throw NullPointerException().<\/li>\n\n\n\n<li>O uso do not-null assertion operator&nbsp;!!.<\/li>\n\n\n\n<li>Inconsist\u00eancia de dados durante a inicializa\u00e7\u00e3o, como quando:<\/li>\n\n\n\n<li>Um arquivo n\u00e3o inicializado this&nbsp;dispon\u00edvel em um construtor \u00e9eusado em outro lugar.\n<ul class=\"wp-block-list\">\n<li>Um construtor de superclasse que chama um membro aberto cuja implementa\u00e7\u00e3o na classe derivada usa um estado n\u00e3o inicializado.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Interopera\u00e7\u00e3o Java:<\/li>\n\n\n\n<li>Tenta acessar um membro de uma&nbsp;null refer\u00eancia de um&nbsp;tipo de plataforma&nbsp;.<\/li>\n\n\n\n<li>Problemas de nulidade com tipos gen\u00e9ricos. Por exemplo, um peda\u00e7o de c\u00f3digo Java adicionado&nbsp;null em um Kotlin&nbsp;MutableList&lt;String&gt;, o que exigiria&nbsp;MutableList&lt;String?&gt; manipul\u00e1-lo corretamente.<\/li>\n\n\n\n<li>Outros problemas causados \u200b\u200bpor c\u00f3digo Java externo<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Al\u00e9m do NPE, outra exce\u00e7\u00e3o relacionada \u00e0 seguran\u00e7a nula \u00e9&nbsp;UninitializedPropertyAccessException. O Kotlin lan\u00e7a essa exce\u00e7\u00e3o quando voc\u00ea tenta acessar uma propriedade que n\u00e3o foi inicializada, garantindo que propriedades n\u00e3o anul\u00e1veis \u200b\u200bn\u00e3o sejam usadas at\u00e9 que estejam prontas. Isso normalmente acontece com&nbsp;lateinit propriedades.<\/p>\n\n\n<div class=\"wp-block-post-date__modified-date wp-block-post-date\"><time datetime=\"2025-01-13T11:03:24-03:00\">13 de janeiro de 2025<\/time><\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A seguran\u00e7a nula \u00e9 um recurso do Kotlin projetado para reduzir significativamente o risco de refer\u00eancias nulas, tamb\u00e9m conhecido como erro de um bilh\u00e3o de d\u00f3lares. Uma das armadilhas mais comuns em muitas linguagens de programa\u00e7\u00e3o, incluindo Java, \u00e9 que acessar um membro de uma refer\u00eancia nula resulta em uma exce\u00e7\u00e3o de refer\u00eancia nula. Em [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-177","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/posts\/177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=177"}],"version-history":[{"count":5,"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/posts\/177\/revisions"}],"predecessor-version":[{"id":207,"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/posts\/177\/revisions\/207"}],"wp:attachment":[{"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devandroid.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}