Bonjour à tous,
J'ai une erreur à l'exécution :

Exception in thread "main" java.lang.ClassCastException:

Sur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
  tabTrie=(Personne[])Personne.tri(tabObj,new Personne());
Où tabTrie est

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Personne[] tabTrie; //Classe Personne
et tabObj est
Le but du code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
  tabTrie=(Personne[])Personne.tri(tabObj,new Personne());
est d'utiliser une seule méthode ou fonction dans une Interface Comparateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
package Cours;
 
//cette interface devra être implémentée par les classes 
//pour lesquelles une comparaison des instances est envisagée 
public interface Comparateur 
{ 
// cette méthode pourra être appelée pour comparer les deux 
// objets reçus en paramètre 
// la méthode retourne un entier dont la valeur dépend 
// des règles suivantes 
// 1 si l’instance o1 est supérieure à o2 
// 0 si les deux instances sont égales 
// -1 si l’instance o1 est inférieure à o2 
// -99 si la comparaison est impossible 
  int compare2(Object o1,Object o2); 
 
  public static final int INFERIEUR=-1; 
  public static final int EGAL=0; 
  public static final int SUPERIEUR=1; 
  public static final int ERREUR=-99; 
 
}
// Une telle interface qui ne contient que la définition d’une seule 
// et unique méthode est appelée interface fonctionnelle.
La méthode ést dans la classe Personne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
public static Object[] tri(Object[] tablo,Comparateur trieur) 
    { 
         int i,j; 
         Object c; 
         Object[] tabloTri; 
         tabloTri=Arrays.copyOf(tablo,tablo.length); 
        for (i=0;i< tabloTri.length;i++) 
        { 
            for( j = i + 1; j<tabloTri.length;j++) 
            { 
            // utilise la fonction compare de l’objet reçu en paramètre 
            // pour comparer le contenu de deux cases du tableau 
             if 
    (trieur.compare2(tabloTri[j],tabloTri[i])==Comparateur.INFERIEUR) 
             { 
                  c = tabloTri[j]; 
                  tabloTri[j] = tabloTri[i]; 
                  tabloTri[i] = c; 
             } 
             else if 
    (trieur.compare2(tabloTri[j],tabloTri[i])==Comparateur.ERREUR) 
             { 
                  return null; 
             } 
            } 
        } 
         return tabloTri; 
    }
Je dois pour utiliser cette fonction de tri fournir 2 paramètres :
- le tableau à trier : tabObj
- une instance de classe qui implémente l'interface Comparateur : new Personne()
Si quelqu'un a une idée MERCI