Lar Finanças Pessoais Programação Java: tudo sobre Generics - dummies

Programação Java: tudo sobre Generics - dummies

Vídeo: O que são Estruturas de Dados? 2024

Vídeo: O que são Estruturas de Dados? 2024
Anonim

Uma das metas de design original para Java era manter o idioma o mais simples possível. O desenvolvedor do idioma levou alguns recursos desnecessariamente complicados do C ++ e jogou-os pela janela. O resultado foi uma linguagem elegante e elegante. Algumas pessoas disseram que o idioma era muito elegante.

Então, depois de vários anos de discussão e discussões, o Java tornou-se um pouco mais complicado. Até o ano de 2004, o Java tinha tipos de enum, aprimorado para loops, importação estática e outros novos recursos interessantes. Mas o recurso mais falado sobre a nova era a introdução de genéricos.

ArrayList people = new ArrayList ();

O uso de qualquer coisa como era novo no Java 5. 0. No Java antigo, você escreveria

ArrayList people = new ArrayList ();

Naqueles dias, um ArrayList poderia armazenar quase qualquer coisa que você quisesse colocar nela - um número, uma conta, um quarto, uma String … qualquer coisa. A classe ArrayList foi muito versátil, mas com essa versatilidade surgiram algumas dores de cabeça. Se você pudesse colocar qualquer coisa em um ArrayList, você não poderia facilmente prever o que você iria sair de um ArrayList.

Em particular, você não poderia escrever facilmente o código que supunha que havia armazenado certos tipos de valores no ArrayList. Aqui está um exemplo:

ArrayList things = new ArrayList (); coisas. adicionar (nova Conta ()); Conta myAccount = coisas. obter (0); // NÃO USE ESTE. É MAU CÓDIGO.

Na terceira linha, a chamada para obter (0) agarra o valor mais antigo na coleção de coisas. A chamada para obter (0) está bem, mas o compilador bloqueia a tentativa de atribuição para o meu número. Você recebe uma mensagem na terceira linha dizendo que tudo o que você obtém da lista de coisas não pode ser preenchido na variável myAccount.

Você recebe esta mensagem porque, quando o compilador chegar à terceira linha, esqueceu que o item adicionado na segunda linha era do tipo Conta!

A introdução de genéricos corrige esse problema:

ArrayList coisas = nova ArrayList (); coisas. adicionar (nova Conta ()); Conta myAccount = coisas. obter (0); // USE ESTE CÓDIGO INSTEAD. É UM BOM CÓDIGO.

Adicionar em dois lugares diz ao compilador que as coisas armazenam as instâncias da conta - nada mais. Então, na terceira linha do código anterior, você obtém um valor da coleção de coisas. Então, porque as coisas armazenam apenas objetos de Conta, você pode fazer meu número de referência referir-se a esse novo valor.

Java 5. 0 adicionou genéricos a Java. Mas, logo após o nascimento de Java 5. 0, os programadores perceberam o quanto o código de genéricos pode ser desajeitado.Afinal, você pode criar genéricos dentro dos genéricos. Um ArrayList pode conter um monte de arrays, cada um dos quais pode ser um ArrayList. Então você pode escrever

ArrayList  mess = new ArrayList  ();

Toda a repetição naquela declaração da bagunça dá aos programadores uma dor de cabeça! Para evitar essa feiúra, as versões Java 7 e versões posteriores têm um operador de diamante , . O operador de diamante diz a Java para reutilizar qualquer coisa insanamente complicada que você colocou na parte anterior da declaração genérica.

Neste exemplo, o Java diz para reutilizar , mesmo que você escreva apenas uma vez. Veja como o código Java 7 simplificado se parece:

ArrayList  mess = new ArrayList ();

Em Java 7 e posterior, você pode escrever qualquer uma dessas declarações de bagunça - a declaração original e desagradável com duas ocorrências de ArrayList [], ou a declaração simplificada (apenas ligeiramente desagradável) com o operador de diamante e apenas uma ArrayList [] ocorrência.

Sim, o código simplificado ainda é complicado. Mas sem toda a repetição ArrayList [], o código simplificado é menos complicado. O operador de diamante Java 7 tira uma chance para você copiar algo incorretamente e ter um grande erro em seu código.

Programação Java: tudo sobre Generics - dummies

Escolha dos editores

Acalma suas emoções ao praticar Mindfulness - dummies

Acalma suas emoções ao praticar Mindfulness - dummies

Aqui, você descobre a maneira consciente de gerenciar as emoções - as etapas para tome quando estiver sentindo baixo, excessivamente irritado ou desconfortavelmente ansioso. As emoções positivas podem ser um sentimento maravilhoso. A alegria, a alegria, a emoção e a felicidade são perfeitas. Mas como você pode lidar com as chamadas emoções negativas? Use a atenção para a saúde emocional A atenção plena está se tornando ...

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Como começar o seu dia de trabalho com meditação Mindfulness - dummies

Você pode encontrar a meditação mindfulness é uma ótima maneira de Comece o seu dia de trabalho. Quando chegar ao trabalho pela manhã, talvez já esteja estressado. Depois de uma agitada hora ou duas preparando as crianças para a escola ou regatear com seu parceiro ou lidar com alguma emergência em casa, seguido de ...

Os melhores sites Mindfulness - dummies

Os melhores sites Mindfulness - dummies

, Independentemente de você morar no Reino Unido ou em outro lugar, se você procurar "mindfulness" 'on-line, você literalmente obterá milhões de resultados. Como você pode dizer o trigo da palha? Aqui estão alguns sites que você achará útil. Atento. Este recurso maravilhoso tem muitos conteúdos de alta qualidade de professores excelentes de atenção plena. O ...

Escolha dos editores

HDR Solução de problemas: Nada está funcionando - manequins

HDR Solução de problemas: Nada está funcionando - manequins

Quando você se depara com uma situação com suas fotografias de alcance dinâmico elevado e parece que nada que você está fazendo está funcionando - as configurações não parecem boas, a imagem parece errada, os efeitos são ruins - relaxe e faça uma pausa. A imagem está lhe dizendo algo. Que algo às vezes é relacionado a forçar ...

HDR Resolução de problemas: falta de imaginação - dummies

HDR Resolução de problemas: falta de imaginação - dummies

A imaginação é uma coisa poderosa ao preparar imagens HDR, fato que é tornou-se mais óbvio quando você vê o resultado de não usá-lo versus usá-lo. A imagem superior desta figura é uma imagem HDR de um diner local durante a "hora dourada" - naquele horário atrasado (ou manhã) quando ...

HDR Solução de problemas: Sharpening - dummies

HDR Solução de problemas: Sharpening - dummies

Se você ficar apanhado na perfeição, você está preparado para aumentar seu HDR imagens. Os fotógrafos às vezes estão obcecados com a nitidez em suas fotos. Eles querem que tudo seja pixelly perfeitamente afiado do nariz da câmera até o infinito, independentemente da lente, abertura, ISO ou velocidade do obturador que eles usem. Esta figura mostra os resultados ...

Escolha dos editores

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Cisco Rede: Mostrar comando de versão em um Switch - dummies

Em qualquer componente de rede da Cisco, o show O comando de versão é aplicável a qualquer hardware usando o Sistema Operacional Cisco IET (Internetwork Operating System), incluindo switches. O comando show version mostra informações ligeiramente diferentes, de acordo com o tipo de dispositivo em que você usa. Veja a saída do comando show version em um switch e ...

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Cisco Rede: Modo de operação EXEC privilegiado - manequins

Você precisa usar o modo EXEC privilegiado se quiser realmente tem acesso de atualização a um sistema de rede Cisco,. Para entrar neste modo no modo EXEC do usuário, emita o comando enable, que solicita uma senha, se configurado. Como o nome do modo sugere, este modo tem privilégios extras para permitir ...

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Cisco Rede: Configuração de Senha de Shell Seguro (SSH) - manequins

Shell seguro (SSH) é um protocolo de rede para seus dispositivos Cisco, que é mais seguro do que o Telenet. Definir uma senha segura é um requisito de configuração para este protocolo. Para configurar o acesso a um switch Cisco para SSH, você precisará ter uma conta de usuário criada em sua opção. O exemplo supõe que você tenha ...