Larback - Retornando conhecimento

O C++ não anda mais com o C. Falou que ele não tem classe.

Criação e utilização de Generics em Java

O uso de Generics permite ao desenvolvedor evitar códigos redundantes ou mesmo o uso de casting excessivo.
Para exemplificarmos, imagine que você precisa de uma classe que contenha um número inteiro (usaremos as classes wrappers e não os tipos primitivos pois Generics só trabalha com objetos):
class Classe {
  public Integer numero;
} 
Agora imagine que você precisa de uma classe, identica a anterior mas que armazene um número real:
class Classe {
  public Float numero;
} 
E imagine que você precisa de diversas classes, com características similares mas tipos diferentes, você acabaria por desenvolver diversas classes com tipos de dados diferentes. Para evitarmos este tipo de coisa, podemos criar classes genéricas:
class Classe<T> {
  public T numero;
} 
O tipo de número agora não é fixo, será definido na hora que formos instanciarmos um objeto de Classe. Número poderá ser de qualquer tipo não primitivo:
Classe <Integer> cInt = new Classe<Integer>();
Classe <Float> cFloat = new Classe<Float>();
Agora em cInt o atributo numero é Integer, em cFloat o atributo numero é Float

Para finalizarmos, um exemplo completo da criação e utilização de classes genericas:
public class Box<T> {
	T lado;
	public void setLado(T lado){
		this.lado = lado;
	}
	public T getLado() {
		return this.lado;
	}

	public static void main(String[] args) {
		Box<Integer> iBox = new Box<Integer>();
		Box<Double> dBox = new Box<Double>();
		Box<String> sBox = new Box<String>();

		iBox.setLado(10);
		dBox.setLado(2.5);
		sBox.setLado("grande pra caramba");
		
	}
}

Bons estudos.