Java programação: tudo sobre os genéricos
Um dos objetivos do projeto original para Java era manter a linguagem mais simples possível. desenvolvedor do idioma levou alguns recursos desnecessariamente complicados de C ++ e os jogou pela janela. O resultado foi uma linguagem que era elegante e elegante. Algumas pessoas disseram que a linguagem era muito elegante.
Então, depois de vários anos de discussão e disputas, Java tornou-se um pouco mais complicado. Até o ano de 2004, o Java teve enum tipos, reforçada para loops, importação estática, e alguns outros novos recursos interessantes. Mas o sobre falou novo recurso mais foi a introdução dos genéricos.
ArrayListpessoas = new ArrayList () -
O uso de qualquer coisa como
pessoas ArrayList = new ArrayList () -
Nestas dias, uma ArrayList pode armazenar quase qualquer coisa que você queria colocar nele - um número, um Conta, uma Quarto, uma Corda . . . qualquer coisa. o ArrayList classe era muito versátil, mas com essa versatilidade veio algumas dores de cabeça. Se você poderia colocar qualquer coisa em um ArrayList, você não poderia facilmente prever o que você iria ficar fora de um ArrayList.
Em particular, você não poderia facilmente escrever código que achei que você tinha armazenado certos tipos de valores no ArrayList. Aqui está um exemplo:
coisas ArrayList = new ArrayList () - things.add (nova Conta ()) - Conta MyAccount = things.get (0) - // NÃO USE ESTA. É o código BAD.
Na terceira linha, a chamada para get (0) agarra o mais antigo valor no coisas coleção. A chamada para get (0) é bom, mas, em seguida, o compilador engasga com a tentativa de cessão de minha conta. Você receber uma mensagem na terceira linha dizendo que o que você começa a partir do coisas lista não pode ser enchido no minha conta variável.
Você receber esta mensagem, porque, no momento em que o compilador atinge a terceira linha, ele se esqueceu de que o item adicionado na segunda linha era do tipo Conta!
A introdução dos genéricos corrige esse problema:
ArrayListcoisas = new ArrayList () -things.add (nova Conta ()) - Conta MyAccount = things.get (0) - // usar este código em seu lugar. É BOM CODE.
adicionando
Java 5.0 adicionado genéricos para Java. Mas logo após o nascimento de Java 5.0, os programadores notaram como desajeitado o código para os genéricos pode ser. Afinal, você pode criar os genéricos dentro de genéricos. A ArrayList pode conter um grupo de matrizes, cada um dos quais pode ser um ArrayList. Então você pode escrever
ArrayList[] Gt; bagunça = new ArrayList [] Gt; () -
Toda a repetição em que bagunça declaração dá aos programadores uma dor de cabeça! Para evitar essa feiúra, Java 7 e versões posteriores têm um operador de diamante, lt; gt;. O operador de diamante diz Java para reutilizar tudo o que coisas insanamente complicado você colocar na parte anterior da declaração genérica.
Neste exemplo, a lt; gt; diz Java para reutilizar
ArrayList[] Gt; bagunça = new ArrayListlt; gt;() -
Em Java 7 e posterior, você pode escrever qualquer um destes bagunça declarações - a declaração original, desagradável com duas ocorrências de ArrayList
Sim, o código simplificado ainda é complicado. Mas sem toda a ArrayList