Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo
A partir da verso 5.0, a linguagem Java passou a suportar classes parametrizadas, ou Generics
Qualquer palavra no-chave pode ser usada, mas por conveno, o parmetro comea com uma letra maiscula
Os parmetros, ento, so usados ao longo da classe
A programao com Generics pode ser tornar complicada, pois h um nvel extra de cognio Uma maneira de se trabalhar com os problemas encontrados aumentar o nvel de detalhamento das mensagens do compilador javac
Exemplo - Pair
Exemplo - Pair
Exemplo - Pair
Sintaxe
No entanto, quando uma instncia de uma classe parametriza criada, a sintaxe necessria
Pair<String> pair = new Pair<STring>(Mario", Prado");
Tipos
Classes parametrizadas no podem receber tipos primitivos como parmetros como int e double
Para o uso destes tipos, a compilao Java prov automaticamente tipos embutidos
Mltiplos parmetros
Mltiplos parmetros
Mltiplos parmetros
Para se trabalhar com um tipo desconhecido faz todo o sentido saber pelo menos do que esse tipo capaz Para isso, possvel definir limitantes para quais tipos podem ser fornecidos a uma classe parametrizada Pode-se exigir que um determinado tipo a ser passado para a classe herde de uma determinada classe ou implemente um dada interface, por exemplo:
Para garantir que uma classe genrica seja serializvel, pode-se requerer a interface Serializable:
public class ClasseExemplo<T extends Serializable>
Mtodos Genricos
Mtodos genricos podem ser definidos independentemente dos parmetros de sua classe
Mesmo em uma classe que recebe parmetros, os parmetros dos mtodos podem ser diferentes dos da classe
Mtodos Genricos
Classes genricas podem ser usadas em herana como qualquer outra, podendo herdar de classes no genricas ou genricas
Importante noo:
Limitaes
Os parmetros de uma classe no so flexveis como o identificador de uma classe convencional Especificamente, um tipo parmetro no pode ser usado em expresses new dentro da classe parametrizada
T object = new T(); T[] a = new T[10]; Pair<String>[] a = new Pair<String>[10]; Nenhuma destas expresses vlida pode levar a problemas de pr-compilao, como recurso infinita
Limitaes
Os parmetros de uma classe no so flexveis como o identificador de uma classe convencional Especificamente, um tipo parmetro no pode ser A soluo destas limitaes usado em expresses new um o uso de colees, dentro da classe parametrizada conjunto de classes Generic j
presentes na API Java T object = new T(); prximas aulas
T[] a = new T[10]; Pair<String>[] a = new Pair<String>[10]; Nenhuma destas expresses vlida pode levar a problemas de pr-compilao, como recurso infinita