poop

Souvent la notion de paires peut être pratique, utilisons la généricité pour créer un objet capable de gérer des paires de n’importe quel objet

public final class Pair<E, T> {
	private E first;
	private T second;
	
	public Pair(E f, T s) {
		first = f;
		second = s;
	}
	
	public E getFirst() {
		return first;
	}
	
	public T getSecond() {
		return second;
	}
}

Méthode générique

On peut ensuite manier des classes génériques dans une fonction pour qu’elle puisse utiliser cette classe générique.

On peut aussi avoir comme type de retour une classe générique

public <S> Pair<String, S> function(S s) {
	//...
}

Types primitifs

On ne peut pas utiliser comme type générique un type primitif (eg. int, float, boolean, etc...), ce ne peut que être des classes

On a donc des types évoluées qui sont associés à des types primitifs (eg. Integer, Double, etc…)

Bornes

On peut forcer un type génériques dans des contraintes (bornes), par exemple qu’elles étendent d’une certaine classe

public final class Obj<E extends Obj2> {}