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 :

[programation] bien créer une class java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Par défaut [programation] bien créer une class java
    Bonjour à tous,

    Je tente de créer une Class java jusque là, rien de bien difficile. La difficulté arrive quand je tente de "penser en java" ...

    voila mon dilemme:

    Je veux créer une Class X dont les champs seront:
    - Enum TypeDeDonnes
    - Objet Donnes

    je pourrai faire cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public class X {
      Enum<maListe> TypeDeDonnes;
      Objet Donnes;
     
       public X (Enum<maListe> enumIn, Objet donnesIn) { 
         this.TypeDeDonnes=enumIn; 
         this.Donnes=donnesIn;
      }
    }
    mais dans ce cas, je ne contrôle pas le type d'Objet reçu par ma class. Là est tout le problème, bien penser en java ... comment modifier cette class pour qu'elle n'accepte qu'une liste d'Objet défini par avance ?

    - peut-on faire un constructeur qui renvoi une exception si l'Objet n'est pas dans la liste ?
    - peut-on faire une Enum d'Objet ?
    - dois-je réécrire le tout différemment ?

    voila les questions que je me pose et que je tente de résoudre ...


    Merci d'avance pour vous réponse.

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Je pense que tu fais une confusion sur le type Enum : il ne s'agit pas d'une collection que tu pourrais remplir d'objets divers, mais d'une classe qui permet de déclarer une liste de constantes (Saison.PRINTEMPS, Saison.ETE...). Voir sur ces questions 9.8. Les énumérations (type enum), par exemple.

    Autant que je comprenne ta problématique, tu devrais te tourner vers un ArrayList générique.

    Cela donnerait une classe X comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class X
    {
     ArrayList<ClasseQueTuVeux> _liste; // et surtout pas enum !
     
     X(ArrayList<ClassQueTuVeux> liste)
     {
      _liste = liste;
     }
    }
    Approximativement.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Par défaut
    merci pour ce retour.

    J'ai mis un Enum pour avoir une liste fini de "type de donnés".
    et je voulais faire de même avec mon objet.

    en effet, l'Enum n'est pas vraiment utile pour mon problème. Pour ce qui est de l' "ArrayList", je ne connais pas vraiment cette classe (je suis en cour de lecture de la javadoc), mais je ne veux pas faire un tableau d'objet dans ma classe, je veux en enregistrer un (et un seul) par instance de ma classe.

    Par contre je souhaite trouver une solution pour que quand l'utilisateur crée un instance de ma classe, il ne puisse pas la créer avec n'importe quel objet possible.

    exemple :
    si ma liste d'objet autorisé par ma classe est : Integer, List, Map, String, Vector.

    à l'heure actuel, si mon utilisateur de ma classe créer une instance de X comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    X instanceDeX = new X(Enum, new char());
    cela fonctionne. Or je voudrais que cela ne fonctionne pas, et que le solution soit élégante (vu que je tente d'apprendre à mieux utiliser java).

    Je voudrais que si l'utilisateur annonce le type d'objet comme étant "Map", il soit obligé de donner un objet "Map".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    X instanceDeX = new X(Enum.MAP, new Map(...)); // fonctionne
    X instanceDeX = new X(Enum.MAP, new char(...)); // ne fonctionne pas
    X instanceDeX = new X(Enum.MAP, new String(...)); // ne fonctionne pas
    j'espère avoir mieux expliqué le problème !

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Tu ouvres simplement les constructeurs qui te conviennent avec les classes qui te conviennent.

    Si les class Map et Chose sont autorisés :
    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
     
    class X
    {
     private Object _obj;
     
     public X(Map obj)
     {
      _obj = obj;
     }
     
     public X(Chose obj)
     {
      _obj = obj;
     }
    }

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Tu ouvres simplement les constructeurs qui te conviennent avec les classes qui te conviennent.

    Si les class Map et Chose sont autorisés :
    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
     
    class X
    {
     private Object _obj;
     
     public X(Map obj)
     {
      _obj = obj;
     }
     
     public X(Chose obj)
     {
      _obj = obj;
     }
    }
    Le problème, si j'ai bien compris, est que là tu n'as pas l'enum. Lui veut vérifier que l'enum correspond bien à la classe fournie à coté.

    Bon, sans vouloir être indiscret, quel est ton but avec cette classe X ? Qu'est elle est censé modéliser ?

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 196
    Par défaut
    C'est une solution que je n'avais point envisagé.

    Merci pour ce retour en tout cas.

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

Discussions similaires

  1. Impossible de créer une classe Java dans Eclipse
    Par DaYonyon dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 11/10/2010, 14h19
  2. Comment importer une class Java (ou bien un .jar) ?
    Par newinjava dans le forum Langage
    Réponses: 6
    Dernier message: 26/11/2009, 23h33
  3. Créer une classe .java avec un code java
    Par demcoul dans le forum Langage
    Réponses: 10
    Dernier message: 03/01/2008, 00h06
  4. Réponses: 14
    Dernier message: 28/02/2007, 09h53
  5. Réponses: 13
    Dernier message: 25/03/2005, 11h00

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