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.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

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

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay