package packGeneri;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Accueil
{
	public static void main(String[] args)
	{
		Gardien<Integer> monGardienInt = new Gardien<Integer>(24);
		Gardien<Float> monGardienFloat = new Gardien<Float>(45.62f);
		Gardien<String> monGardienString = new Gardien<String>("Bonjour");
		Gardien2<String, Integer> monGardienDouble = new Gardien2<String, Integer> ("Nous sommes en", 2013);
		Gardien <Avion> monGardienAvion = new Gardien<Avion>(new Avion(16000, 4, 200));
		// Gardien<Integer> monMauvaisGardienInt = new Gardien<Integer>("Erreur"); // Bug a la compilation
		
		System.out.println("Valeur du gardien d'entier: " + monGardienInt.getValeur());
		System.out.println("Valeur du gardien de float: " + monGardienFloat.getValeur());
		System.out.println("Valeur du gardien de chaine: " + monGardienString.getValeur());
		
		System.out.println("\nGardien double : " + monGardienDouble.getPremier() + " " + monGardienDouble.getSecond());
		System.out.println("Classe du premier paramètre : " + monGardienDouble.getPremier().getClass().getName());
		System.out.println("Classe du second paramètre : " + monGardienDouble.getSecond().getClass().getName());
		generiList();
	}
	
	public static void generiList()
	{
		// Application de la généricité aux collections.
		List<Float> maListeFloat = new ArrayList<Float>();
		maListeFloat.add(41.21f);
		maListeFloat.add(-50.195f);
		maListeFloat.add(33.25f);
		maListeFloat.add(837.9502f);
		
		// Tri par ordre croissant.
		Collections.sort(maListeFloat);
		
		for (Float maValeur : maListeFloat)
		{
			System.out.println("Ma valeur : " + maValeur);
		}
		
	}
	
	public static void listeHerit()
	{
		List<Avion> mesAvions = new ArrayList<Avion>();
		List<Vehicule> mesVehicules = new ArrayList<Vehicule>();
		List<?> mesObjets; // Accepte n'importe quel objet
		List <? extends Vehicule> mesObjets2; //Accepte n'importe quoi qui descend de véhicule.
		
		// mesVehicules = mesAvions; Refusé
		// mesAvions = mesVehicules;
		
	}
	
}
