DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

1

Exemplo simples de genérico

O programa apresentado ilustra a criação e uso de classes genéricas. Ele define duas classes principais:

Gen:

  • Classe genérica que usa o parâmetro de tipo T.
  • T é um espaço reservado para o tipo real que será substituído ao criar um objeto da classe.

Características:

  • Armazena um objeto do tipo T.
  • Fornece um construtor que aceita um objeto do tipo T.
  • Implementa métodos para retornar (getob) e exibir (showType) o tipo armazenado
class Gen<T> {
    T ob; // Objeto do tipo T

    // Construtor recebe um objeto do tipo T
    Gen(T o) {
        ob = o;
    }

    // Retorna o objeto
    T getob() {
        return ob;
    }

    // Mostra o tipo do objeto armazenado
    void showType() {
        System.out.println("Type of T is " + ob.getClass().getName());
    }
}

Enter fullscreen mode Exit fullscreen mode

GenDemo:

  • Demonstra como instanciar e usar a classe Gen com tipos diferentes.
  • Exemplo com Integer e String.
class GenDemo {
    public static void main(String args[]) {
        // Gen com Integer
        Gen<Integer> iOb = new Gen<>(88); 
        iOb.showType(); // Mostra o tipo: Integer
        System.out.println("value: " + iOb.getob());

        // Gen com String
        Gen<String> strOb = new Gen<>("Generics Test");
        strOb.showType(); // Mostra o tipo: String
        System.out.println("value: " + strOb.getob());
    }
}

Enter fullscreen mode Exit fullscreen mode

Saída do programa:

Type of T is java.lang.Integer
value: 88
Type of T is java.lang.String
value: Generics Test

Enter fullscreen mode Exit fullscreen mode

Análise Detalhada:
Uso de :
T é um parâmetro de tipo que pode ser substituído por qualquer tipo real (como Integer ou String).
O parâmetro é especificado entre < > na declaração da classe e nos métodos que usam T.

Verificação de tipos em tempo de compilação:
Um objeto Gen não pode ser atribuído a Gen, garantindo a segurança de tipos.

Autoboxing:
Java automaticamente encapsula valores primitivos (como int) em objetos correspondentes (Integer), como no caso Gen(88).

Método showType:
Exibe o tipo real armazenado chamando getClass().getName() no objeto encapsulado.

Substituição de T:
Quando Gen é usado, todas as referências a T são substituídas por Integer. Para Gen, o mesmo acontece com String.

Erasure (Apagamento de Tipos):
Internamente, o compilador remove as informações genéricas, substituindo-as pelas coerções necessárias, garantindo que uma única versão da classe Gen seja usada para diferentes tipos.

Benefícios dos Genéricos:

  • Segurança de Tipos: Erros como atribuir um Double a um Integer são evitados.
  • Código Reutilizável: A mesma classe pode ser usada com diferentes tipos, sem a necessidade de criar implementações específicas.

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more