Em Java, é possível declarar uma classe genérica que aceita dois ou mais parâmetros de tipo. Esses parâmetros são especificados como uma lista separada por vírgulas.
Por exemplo, a classe genérica TwoGen aceita dois parâmetros de tipo:
class TwoGen<T, V> {
T ob1;
V ob2;
// Construtor que recebe objetos de tipos T e V
TwoGen(T o1, V o2) {
ob1 = o1;
ob2 = o2;
}
// Exibe os tipos de T e V
void showTypes() {
System.out.println("Type of T is " + ob1.getClass().getName());
System.out.println("Type of V is " + ob2.getClass().getName());
}
T getob1() { return ob1; }
V getob2() { return ob2; }
}
Exemplo de uso:
A classe pode ser utilizada com diferentes tipos, como mostrado abaixo:
TwoGen<Integer, String> tgObj = new TwoGen<>(88, "Generics");
tgObj.showTypes(); // Exibe os tipos de T e V
int v = tgObj.getob1();
System.out.println("value: " + v);
String str = tgObj.getob2();
System.out.println("value: " + str);
Saída do exemplo:
Type of T is java.lang.Integer
Type of V is java.lang.String
value: 88
value: Generics
Notas importantes:
Ao declarar TwoGen, é necessário passar dois argumentos de tipo ao criar uma instância, como neste exemplo:
TwoGen<Integer, String> tgObj = new TwoGen<>(88, "Generics");
Aqui, T é substituído por Integer e V por String.
Os argumentos de tipo podem ser iguais:
TwoGen<String, String> x = new TwoGen<>("A", "B");
Nesse caso, tanto T quanto V são do tipo String.
Forma geral da declaração de uma classe genérica:
class NomeClasse<ParâmetrosTipo> {
// Implementação
}
Forma geral para criar uma instância genérica:
NomeClasse<ArgumentosTipo> nomeVariavel = new NomeClasse<>(ArgumentosConstrutor);
Top comments (0)