Vídeo: Curso POO Java #02b - Criando Classes e Objetos em Java 2024
A classe genérica em Java é uma classe que pode operar em um tipo específico especificado pelo programador na compilação Tempo. Para realizar isso, a definição de classe usa parâmetro de tipo s que atuam como variáveis que representam tipos (como int ou String).
Para criar uma classe genérica, você lista o parâmetro de tipo após o nome da classe em colchetes angulares. O parâmetro de tipo especifica um nome que você pode usar em toda a classe em qualquer lugar que de outra forma você usaria um tipo. Por exemplo, aqui está uma versão simplificada da declaração de classe para a classe ArrayList:
classe pública ArrayList
Eu exclui as extensões e implementa cláusulas para se concentrar no parâmetro de tipo formal:. O parâmetro E especifica o tipo de elementos que estão armazenados na lista.
Para criar uma instância de uma classe genérica, você deve fornecer o tipo real que será usado no lugar do parâmetro de tipo, como este:
ArrayList myArrayList;
Aqui o parâmetro E é String, então o tipo de elemento para esta instância da classe ArrayList é String.
Agora veja a declaração para o método de adição para a classe ArrayList:
public boolean add (E o) {// corpo de método omitido (obrigado)}
Onde você normalmente espera ver um tipo de parâmetro, você vê a letra E. Assim, essa declaração de método especifica que o tipo para o parâmetro o é o tipo especificado para o parâmetro tipo formal E. Se E é String, o método add aceita apenas objetos String. Se você chamar o método add passando qualquer coisa que não seja um parâmetro String, o compilador irá gerar uma mensagem de erro.
Você também pode usar um parâmetro de tipo como tipo de retorno. Aqui está a declaração para o método ArrayList class get:
public E get (int index) {// corpo de método omitido (você é bem-vindo)}
Aqui, E é especificado como o tipo de retorno. Isso significa que se E for String, esse método retorna os objetos String.
O principal benefício dos genéricos é que a verificação de tipo ocorre no tempo de compilação. Assim, depois de especificar o valor de um parâmetro de tipo formal, o compilador sabe como fazer o tipo de verificação implícito no parâmetro. É assim que não sabe deixar você adicionar objetos String a uma coleção de funcionários.