IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

unchecked method invocation


Sujet :

avec Java

  1. #1
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut unchecked method invocation
    Bonsoir à toutes et tous ,
    la compilation de mon application se solde par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Note: Agenda.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    Après re-compilation avec option la ligne fautive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Collections.sort(l);
    l est une LinkedList déclarée pour une classes Evenement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LinkedList<Evenement> l = new LinkedList<Evenement>();
    Au final ,l'application fait ce qu'on attend d'elle mais j'aimerais pouvoir résoudre cela.
    Pourquoi ce Warning et comment le régler ?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu peux montrer le code de la classe Agenda ? Parce qu'on obtient ce warning plutôt si on écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LinkedList list = new LinkedList();
    Collections.sort(list);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Tout le code ?
    Non parce qu'elle fait presque 200 lignes ?!

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Commençons pas la méthode où se trouve l'invocation de Collections.sort() alors.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    c'est tout d'un bloc alors voilà :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
     
    public class Agenda {
        public static void main(String[] args) throws IOException {
     
            Scanner sc = new Scanner(System.in);
            LinkedList<Evenement> l = new LinkedList<Evenement>();
            LinkedList<Evenement> base = null;
            ListIterator li = null;
            ObjectOutputStream oss = null;
            ObjectInputStream ois = null;
            boolean escapeFromMainMenu = false;
            String ligne = "eviv bulgroz !";
            char choix = '&';
     
            while(true) {
                if(!escapeFromMainMenu) {
                    System.out.println("=============================|  MENU  |==================================");
                    System.out.println("|===  1) Nouvel Evènement.             8) Liste des Evènements.       ===|");
                    System.out.println("|===  6) Trier les Evènements.         5) Enregistrer les Evènements. ===|");
                    System.out.println("|===------------------------------------------------------------------===|");
                    System.out.println("|===  2) Charger une base.             4) Consulter une base.         ===|");
                    System.out.println("|===  3) Fusionner la base.                                           ===|");
                    System.out.println("|                             7) QUITTER                                 |");
                    System.out.println("=========================================================================");
                    System.out.print("Votre choix : ");
                    while((ligne = sc.nextLine()).length() == 0) ;
                    choix = ligne.charAt(0);
                }
                switch(choix) {
    // Création et mise en liste d'un Evenement
                        case '1':
                        l.add(new Evenement(sc));
                        break;
    // Charger une base
                        case '2':
                        System.out.print("❓❓❓ nom de la base  : ");
                        ligne = sc.nextLine();
                        try {
                            ois = new ObjectInputStream(new FileInputStream(new File(ligne)));
                            base = new LinkedList<Evenement>();
                            do {base.add((Evenement)ois.readObject());} while(true);
                        } catch (EOFException e1) {
                            ;
                        } catch (ClassNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException ex) {
                            ex.printStackTrace();
                        } finally {
                            if(ois != null) {ois.close();}
                        }
                        break;
    // Fusion de la base et des Evènements
                        case '3':
                        if(base == null) {System.out.print("⛔️⛔️⛔️⛔️  Il vous faut charger une base avant de la fusionner   ⛔️⛔️⛔️⛔️");sc.nextLine();break;}
                        System.out.print("⚠️⚠️⚠️  ATTENTION ! TOUS les évènements seront fusionnés ! VALIDATION ? ");
                        if(!(sc.nextLine()).equals(VALIDATION_CODE)) {System.out.println("⛔️⛔️⛔️  Bad validation code  ⛔️⛔️⛔️");break;}
                        l.addAll(base);
                        System.out.println("✅  Fusion réalisée .");
                        break;
    // Visualisation de la base
                        case '4':
                        if(base == null) {System.out.print("⛔️⛔️⛔️⛔️  Il vous faut charger une base avant de la visualiser  ⛔️⛔️⛔️⛔️");sc.nextLine();break;}
                        li = base.listIterator();
                        int i = 1;
                        boolean control = false;
                        while(li.hasNext()) {
                            control = false;
                            System.out.println(i + ") " + li.next().toString());
                            if(i % MAX_VISIBLE_EVENEMENT == 0) {
                                control = true;
                                System.out.print(" -- Appuyer sur une Return pour continuer ...");
                                sc.nextLine();
                            }
                            i++;
                        }
                        if(!control) {System.out.print(" -- Appuyer sur une Return pour continuer ...");sc.nextLine();}
                        break;
    // Visualisation de la liste des Evenement
                        case '8':
                        if(l.isEmpty()) {escapeFromMainMenu = false;break;}
                        ligne = visualisation(l,sc);
                        switch(ligne.charAt(0)) {
                            case 'D':
                                choix = '#';
                                escapeFromMainMenu = true;
                                break;
                            case 'C':
                                choix = '$';
                                escapeFromMainMenu = true;
                                break;
                            default:
                                escapeFromMainMenu = false;
                                break;
                        }
                        break;
                        case '7':
                        break;
    // Enregistrement
                        case '5':
                        if(l.isEmpty()) break;
                        System.out.print("⚠️⚠️⚠️  ATTENTION ! TOUS les évènement seront enregistrés ! VALIDATION ? ");
                        if(!(sc.nextLine()).equals(VALIDATION_CODE)) {System.out.println("⛔️⛔️⛔️  Bad validation code  ⛔️⛔️⛔️");break;}
                        System.out.print("Donner un nom à votre base ? ");
                        ligne = sc.nextLine();
                        try {
                            oss = new ObjectOutputStream(new FileOutputStream(ligne));
                            li = l.listIterator();
                            while(li.hasNext()) {oss.writeObject(li.next());}
                            oss.flush();
                            System.out.println("✅  Enregistrement éffectué .");
                        } catch (final java.io.IOException e) {
                            e.printStackTrace();
                        } finally {
                            try {
                                if(oss != null) {
                                    oss.flush();
                                    oss.close();
                                }
                            } catch (final IOException ex) {
                                ex.printStackTrace();
                            }
                        }
                        break;
    // Trier les Evènements
                        case '6':
                        if(l.isEmpty()) {System.out.println("❓❓❓❓  Aucun évènement à trier   ❓❓❓");break;}
                        Collections.sort(l);
                        System.out.println("✅  Liste triée .");
                        break;
    // Edition d'un Evenement
                        case '$':
                        if(escapeFromMainMenu){
                            int index = 0;
                            if(ligne.length() > 1) index = Integer.parseInt(ligne.substring(1));
                            else {escapeFromMainMenu = false;break;}
                            if(index<=l.size() && index>=0) {
                                (l.get(index-1)).setEvent(sc);
                                choix = '8';
                            }
                            else escapeFromMainMenu = false;
                        }
                        break;
    // Supprime un Evenement de la liste
                        case '#':
                        if(escapeFromMainMenu) {
                            int index = 0;
                            if(ligne.length() > 1) index = Integer.parseInt(ligne.substring(1));
                            else {escapeFromMainMenu = false;break;}
                            if(index<=l.size() && index>=0) {
                                l.remove(index-1);
                                choix = '8';
                            }
                            else escapeFromMainMenu = false;
                        }
                        break;
                    default:
                    break;
                }
                if(choix == '7') break;
            }
        }
    ligne 129

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Et la classe Evenement, tu peux montrer juste la première ligne ? Genre, ce ne serait pas public class Evenement<T> implements Comparable<Evenement<T>> { ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Pas du tout !!!
    C'est plutôt du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class Evenement implements Serializable,Comparable {

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Le souci est là.

    Compare.sort() attends un List<T> tel que <T extends Comparable<? super T>. Ce qui n'est pas le cas de Evenement. Le warning le signale donc.
    Normalement, un Evenement doit être comparé avec un Evenement, pas avec autre chose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Evenement implements Serializable, Comparable<Evenement>
    .
    le super tolère les classes parentes. Donc éventuellement on pourrait avoir public class Evenement implements Serializable, Comparable<Serializable>, ou public class Evenement implements Serializable, Comparable<Object>, et ne pas déclencher le warning sur Collections.sort, mais ça n'aurait pas vraiment de sens pour instaurer une relation d'ordre aux évenements. Et au final, c'est bien une liste d'Evenement que tu tries.

    Par ailleurs, juste un truc, ça me semble étrange le setEvent(Scanner), et potentiellement source de dysfonctionnement et d'exception : je ne sais pas ce que tu fais sur l'instance de Scanner dans l'evenement, mais tu engages potentiellement une lecture multiple d'un tampon unique (celui du Scanner).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Merci pour ton analyse Joel;
    ta compréhension dépasse mon entendement.
    Je vais dormir maintenant ,je verrais à corriger demain.
    Re-mrci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RMI] Le fonctionnement de RMI (Remote Method Invocation)
    Par Alain Defrance dans le forum Java EE
    Réponses: 17
    Dernier message: 15/05/2011, 16h39
  2. RMI (Remote Method Invocation) Connection timed out
    Par xasha dans le forum Langage
    Réponses: 8
    Dernier message: 03/12/2009, 13h00
  3. Invocation automatique de methode static
    Par nuriel2 dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2008, 19h19
  4. Réponses: 0
    Dernier message: 17/07/2008, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo