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 :

[Generics] Classe générique


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut [Generics] Classe générique
    Bonjour,

    J'essaie de me mettre doucement à la généricité avec Java...
    Voilà j'ai créé une classe générique toute simple de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class UnType<T> {
      public  T type;
     
      public UnType(T type){
          this.type=type;
      } 
    }
    Ce code compile bein...
    Ensuite je voudrais utiliser ma classe UnType pour une variable dans d'autres classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     private UnType<String> valeur;
     
        public StrValue() {
            valeur = new UnType<String>("toto");
        }
    Quand je fais un print de valeur j'ai bien "toto" qui s'affiche... Par contre si je fais print de valeur.getClass() il me réponds que c'est une classe UnType, or si je ne m'abuse il devrait me dire que c'est un String?? Ce qui me permettrait de faire des comparaisons de chaînes ce qui n'est pas le cas actuellement....
    Je suppose qu'il ya quelque chose que je n'ai pas bien compris...Mon problème vient il de ma classe UnType ou bien de la façon dont je l'utilise dans valeur?

    Merci de votre aide

    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 48
    Points : 59
    Points
    59
    Par défaut
    Salut,

    Pourquoi devrait-il te dire que c'est un String alors que c'est un Untype?

    Tu viens de créer une instance ayant pour corps la mémoire vive du String. Le logiciel considère cette portion comme étant Untype ou un String selon la référence que tu utilises pour y accéder.

    JAVA est abstrait mais s'exécute toujours sur un support physique, c'est pas magique.

    Les notations <...> c'est du C++ ou du Java Tiger?

  3. #3
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut Re: Classe générique
    Tu est confus sur un Point !

    ta classe UnType sera toujours de type UnType.
    par contre ell est lié à un autre type .

    ce qui te renverrais un String dans ton cas serait par exemple une méthode dans ta classe UnType comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public T get()
    { return this.type; }
    le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     valeur = new UnType<String>("toto").get(); // renverra un String
    Citation Envoyé par norkius
    Bonjour,

    J'essaie de me mettre doucement à la généricité avec Java...
    Voilà j'ai créé une classe générique toute simple de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class UnType<T> {
      public  T type;
     
      public UnType(T type){
          this.type=type;
      } 
    }
    Ce code compile bein...
    Ensuite je voudrais utiliser ma classe UnType pour une variable dans d'autres classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     private UnType<String> valeur;
     
        public StrValue() {
            valeur = new UnType<String>("toto");
        }
    Quand je fais un print de valeur j'ai bien "toto" qui s'affiche... Par contre si je fais print de valeur.getClass() il me réponds que c'est une classe UnType, or si je ne m'abuse il devrait me dire que c'est un String?? Ce qui me permettrait de faire des comparaisons de chaînes ce qui n'est pas le cas actuellement....
    Je suppose qu'il ya quelque chose que je n'ai pas bien compris...Mon problème vient il de ma classe UnType ou bien de la façon dont je l'utilise dans valeur?

    Merci de votre aide

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Ok, je pense comprendre ce que vous me dites...

    Pourtant si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ArrayList<String> lst=new ArrayList<String>();
    lst.add("toto");
    system.out.println (lst.get(0).getClass());
    J'ai bien String qui s'affiche Je pensais que j'obtiendrai le même type de résultat
    Si j'utilise la méthode get ça marche effectivement mais je dois donc déclarer valeur comme un type String... Ca n'a donc pas d'ntéret particulier que j'utilise la généricité si je comprend bien...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    bien je renonce donc à la généricité pour mon problème...
    Merci pour vos infos

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/02/2013, 23h27
  2. Utilisation d'une classe générique
    Par bandit_debutant dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2006, 16h54
  3. Réponses: 3
    Dernier message: 05/10/2006, 17h15
  4. [C# 2.0] Un exemple de classe générique qui ne compile pas.
    Par Pierre8r dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 11h11
  5. [C#][ADO] Classe Générique ADO
    Par tscoops dans le forum Accès aux données
    Réponses: 2
    Dernier message: 15/11/2005, 14h21

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