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

Langage Java Discussion :

[Debutant(e)]caster un Object


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut [Debutant(e)]caster un Object
    Bonjour,

    Est-il possible de caster un Object en File lorsque l'Object est une instance de File ?
    Je liste tout ce qu'il y a dans un répertoire et je récupère des Object. Lorsque c'est un fichier, je voudrais récupérer une instance de File pour travailler sur le fichier.
    Merci !





    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 75
    Points : 92
    Points
    92
    Par défaut
    Salut,

    Il est possible de caster à peu près n'importe quoi en n'importe quoi en Java...
    Par contre, il va t'envoyer balader à l'exécution si tu fais n'importe quoi.

    Pour ton problème tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File fichier= (File) objet;
    Et, avant, si tu ne veux pas te planter, tu peux faire une vérification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(objet instanceof File) {
      //C'est un fichier.
      File fichier = (File) objet;
      ...
    }

  3. #3
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Il est possible de caster à peu près n'importe quoi en n'importe quoi en Java...
    Par contre, il va t'envoyer balader à l'exécution si tu fais n'importe quoi.
    Donc il n'est pas possible de caster n'importe quoi en n'importe quoi, contrairement a C...

    Si on a une classe XY, les règles sont les suivantes:

    - si xy une instance de XY est une sous-classe de X alors tu peux faire sans problèmes (X) xy,

    - si XXY une classe fille de XY alors soit xy une instance de XY, tu peux faire (XXY) xy si et seulement si xy est effectivement de type XXY (xy instance of XXY est vrai)...

    A+

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Merci pour vos réponses !

    Mais le problème, c'est que ça ne fonctionne pas ...

    Voilà le code :
    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
     
    package JNDI1;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingEnumeration;
    import javax.naming.NamingException;
    import javax.naming.NameClassPair;
    import java.io.File;
     
    public class Essai1 {
     
        /** Creates a new instance of Essai1 */
        public static void main(String[] args) {
            try{
                java.util.Properties p = new java.util.Properties();
                p.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
                p.setProperty(Context.PROVIDER_URL, "file:///JAVA");
                Context _ic = new InitialContext(p);
                NamingEnumeration ne= _ic.ic.listBindings("");
                while(ne.hasMore()){
                    Object o = ne.next();
                    System.out.println(o.toString() + " --- " + o.getClass());
                    if(o instanceof javax.naming.NameClassPair){
                        NameClassPair ncp = (NameClassPair)o;
                        if(ncp.getClassName().compareTo("java.io.File") == 0){
                            System.out.println("pass");
                            File f=(File)o;
                            System.out.println(f.getName());
                        }
                    }
                }
            }catch(NamingException ne){
                System.out.println(ne + " " + ne.getExplanation());
            }
        }
    }
    La compilation passe sans problème. Par contre, à l'exécution, j'ai une ClassCastException. Ici, l'instance d'Object est toujours javax.naming.NameClassPair. A partir de cette NameClassPair, je peux retrouver le type de l'Objet (getClassName).
    Mais même après vérification, je ne peux toujours pas caster.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    J'ai trouvé !

    Tous les objets récupérés sont des Bindings. Il fallait donc passer par là ...
    Merci !

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

Discussions similaires

  1. Caster un object en un object hérité
    Par Gregco dans le forum Langage
    Réponses: 4
    Dernier message: 17/09/2009, 10h42
  2. caster type Object en un autre type
    Par CaptainCyd dans le forum Langage
    Réponses: 4
    Dernier message: 18/09/2007, 15h47
  3. debutant : vector contenant des objects
    Par zoubla dans le forum SL & STL
    Réponses: 11
    Dernier message: 26/10/2006, 14h10
  4. [C#][debutant]erreur => object reference is required for a no
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/01/2006, 14h47
  5. [Débutant] Caster un Object en String[][]
    Par ArseNic dans le forum Langage
    Réponses: 9
    Dernier message: 13/01/2006, 19h41

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