"Outro tópico legal."
"As surpresas continuam chegando! É meu aniversário?"
"Hoje falarei sobre genéricos. Genéricos são tipos que possuem um parâmetro. Em Java, as classes container permitem que você indique o tipo de seus objetos internos."
"Quando declaramos uma variável genérica, indicamos dois tipos em vez de um: o tipo da variável e o tipo dos dados que ela armazena."
"ArrayList é um bom exemplo. Quando criamos um novo objeto ArrayList, é conveniente indicar o tipo dos valores que serão armazenados dentro desta lista."
Código | Explicação |
---|---|
|
Crie uma variável ArrayList chamada list . Atribua um objeto ArrayList a ele. Esta lista só pode armazenar objetos String . |
|
Crie uma variável ArrayList chamada list . Atribua um objeto ArrayList a ele. Esta lista pode armazenar quaisquer valores . |
|
Crie uma variável ArrayList chamada list . Atribua um objeto ArrayList a ele. Esta lista só pode armazenar Integer e int valores. |
"Parece superinteressante. Especialmente a parte sobre armazenar valores de qualquer tipo ."
"Parece apenas uma coisa boa. Na realidade, se colocarmos strings em um ArrayList em um método e esperarmos que ele contenha números em outro método, o programa travará (terminará com um erro)."
"Eu vejo."
"Por enquanto, não vamos criar nossas próprias classes com parâmetros de tipo. Vamos apenas usar as existentes."
"Qualquer classe pode ser um parâmetro de tipo, mesmo uma que eu escrevo?"
"Sim. Qualquer tipo, exceto para tipos primitivos. Todos os parâmetros de tipo devem herdar da classe Object."
" Quer dizer que não posso escrever ArrayList<int>? "
"Na verdade, você não pode. Mas os desenvolvedores Java escreveram classes wrapper para cada um dos tipos primitivos. Essas classes herdam Object . É assim que parece:"
tipo primitivo | Aula | Lista |
---|---|---|
int | inteiro | ArrayList< Inteiro > |
dobro | Dobro | ArrayList< Duplo > |
boleano | boleano | ArrayList< Booleano > |
Caracteres | Personagem | ArrayList <Caractere> _ |
byte | Byte | ArrayList< Byte > |
"Você pode facilmente atribuir classes primitivas e seus análogos (classes wrapper) entre si:"
Exemplos |
---|
|
|
|
|
|
"Ótimo. Acho que vou tentar usar ArrayList com mais frequência."
GO TO FULL VERSION