Partage
  • Partager sur Facebook
  • Partager sur Twitter

utilisation de la methode instanceof()

petite incompréhension

    1 mai 2012 à 19:38:27

    Bonsoir a tous , j’ai une petite question consernant cet exemple :
    void testClasse(Object o) {
    if (o instanceof MaClasse )
    System.out.println(" o est une instance de la classe MaClasse ");
    else System.out.println(" o n'est pas un objet de la classe MaClasse ");
    }
     void afficheChaine1(Object o) {
    if (o instanceof MaClasse)
    System.out.println(o.getChaine());
    // erreur à la compil car la méthode getChaine()
    //n'est pas définie dans la classe Object
    }
    // pour palier au probleme la methode sera :
    void afficheChaine2(Object o) {
    if (o instanceof MaClasse)
    {
    MaClasse m = (MaClasse) o;
    System.out.println(m.getChaine());
    


    Ma question (s) est la suivante:
    Pourquoi O.getchaine() ne fonctionnerais pas , elle est de meme type que MaClasse(affichechaine1)
    Quelle est l’interet de declarer une variable par exemple :Object a =new Maclasse() ;
    Puis de faire un cast afin d’utiliser la methode implemanté dans la classe MaClasse ;
    (pour dire quelle est la difference entre :
    Object a =new MaClass();
     Object a=new MaClasse();
    

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      1 mai 2012 à 20:45:05

      void afficheChaine1(Object o) {
      ...
      o.getChaine();

      o st de type Object, et donc ne possede pas la méthode getChaine(), pour l'avoir il faut downcaster.

      A part de très rares exception, instanceOf et les cast sont à éviter.
      • Partager sur Facebook
      • Partager sur Twitter

      utilisation de la methode instanceof()

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown