Salut à tous,

J'ai l'impression d'être bloqué avec du code qui parait simple mais dont je n'arrive pas à comprendre le mécanisme pour éviter ces erreurs.

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
int i;
		GregorianCalendar test1 = new GregorianCalendar();
 
		for (i = 0 ; i < fichierFTPs.length ; i++)
		{
			Calendar test2 = Calendar.getInstance();
			test2 = fichierFTPs[i].getTimestamp();
			System.out.println("Fichier n°"+i);
			System.out.println("Son nom est : " + fichierFTPs[i].getTimestamp());
		}
Eclipse me signal que la variable test2 n'est pas utilisé. Pourtant la ligne juste en dessous de sa déclaration je l'utilise. Si je change l'utilisation de test2 avec test1 je n'ai plus d'erreur d'utilisation avec test1 mais une erreur mismatch car getTimestamps retourne un type Calendar et non GregorianCalendar

Ainsi comme je ne peux pas travailler avec GregorianCalendar je vois que la classe Calendar possède une méthode (et non un constructeur) permettant de prendre une instance de celle-ci. Mais puisque c'est une classe abstract (Calendar) pourquoi je peux néanmoins utiliser une méthode pour prendre une instance ?

Il existe le polymorphisme ok, mais Calendar ne possède qu'une seule sous-classe GregorianCalendar et une classe de GregorianCalendar ne veut pas travailler avec getTimestamp qui lui retourne un type Calendar.
Comment je peux savoir à coup sur de quel type est une variable ?
Je ne peux travailler avec aucun des 2 types....


J'ai l'impression que le serpent ce mort la queue et je ne comprend rien.
Pourriez-vous m'aider à comprendre les mécanismes qui implique ces erreurs svp ?




Merci à vous,