Java
Fernando Silva
DCC-FCUP
Estruturas de Dados
Fernando Silva (DCC-FCUP)
5. Generics, Iterators e Comparable em Java
Estruturas de Dados
1 / 12
Tipos de Dados Abstractos – Generics em Java
A partir do Java 5.0, passamos a ter uma base mais robusta e genérica para lidar com tipos abstractos de dados sem que se tenha de recorrer a
“castings” explícitos.
Um tipo de dados genérico é um tipo de dados que não está definido em tempo de compilação, mas que fica completamente especificado em tempo de execução.
Vantagens:
permite a verificação de erros em tempo de compilação. permite que se definam classes em termos de um conjunto de tipos formais de parâmetros, que podem ser usados para abstrair variáveis internas. Exemplo: em vez de termos uma lista de inteiros, passar a ter uma lista genérica em que o tipo de dados é definido em tempo de execução. Fernando Silva (DCC-FCUP)
5. Generics, Iterators e Comparable em Java
Estruturas de Dados
2 / 12
Object vs. Generics
Uma forma de definirmos classes com atributos que pudessem representar qualquer objecto era fazendo uso do tipo de dados Object.
Por exemplo, fazendo uso das classes Node e LinkedList do capítulo 4, podemos ter:
LinkedList l= new LinkedList();
l.addFirst(new Integer(2));
Integer x= (Integer) l.get(0); // casting explícito
A ideia dos tipos genéricos é poder ter, por exemplo, uma definição de lista genérica em que possa posteriormente explicitar qual o tipo particular de dados que vai ter. Por exemplo:
LinkedList l= new LinkedList();
l.addFirst(new Integer(2));
Integer x= l.get(0);
Fernando Silva (DCC-FCUP)
5. Generics, Iterators e Comparable em Java
Estruturas de Dados
3 / 12
Exemplo de classe com tipos genéricos
Para definir uma classe genérica, introduzimos parâmetros genéricos usando letras como E, K, T, V.
Fernando Silva (DCC-FCUP)
5. Generics, Iterators e Comparable em Java
Estruturas de