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 :

[Conception] Paramétrage par une classe


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 45
    Par défaut [Conception] Paramétrage par une classe
    Supposons une classe qui reçoive en paramètre lors de son itialisation un objet d'une autre classe que l'on a defini. Je sais que l'on peut déclarer la variable qui va reçevoir l'objet avec le nom de la classe correspondante. Mais est-ce qu'il y a un moyen de s'en sortir quand on ne connait pas le type de la classe ?
    Ou plutôt , quand la variable peut etre un objet de plusieurs classes differentes .

    Je sais que Java a un typage statique , mais il y aurait pas un moyen de déclarer la variable qui reçoit la classe en "trouvant" (comment , ça j'en sais rien ) le type de la classe lors de l'affectation ? Non ?

  2. #2
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonjour,

    Pour le paramètre de ton constructeur tu peux utiliser le type Object (toute les classes créées dérivent de la classe Object)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public MaClasse(Object o) {
        ...
    }
    Sinon, peut être que les objets que tu va passer en paramètre de ton constructeur héritent d'une même classe ou implémentent une même interface ? Dans ce cas, tu peux mettre dans le constructeur un paramètre de même type que la classe étendue ou que l'interface.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Par défaut
    Sallut,

    Ou sinon il a les templates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class MaClass<T> {
        public MaClass (T objet) {
            // La variable objet contient un objet de type T
        } 
    } // MaClass
     
    // Tu instancie alors ta classe de la facon suivante :
    MaClass<String> a = new MaClass<String> ("Valeur");
    Voila apres je sais pas si c'est ce que tu veux.

    a+

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Si toutes les classes possibles que tu peux passer en paramètres ont quelque chose en commun (des méthodes) tu pourrais passer par une interface définissant ce tronc commun. Tu n'auras plus qu'à fournir l'interface comme type.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 45
    Par défaut
    OK donc si je déclare ma variable avec "Object" , elle pourra contenir n'importe quel type d'objet.Super ! Je vais tester ça !

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Attention... avec le type Object, ta classe pourra effectivement contenir n'importe quoi. Mais tu ne pourras alors utiliser que les méthodes de cette classe, qui sont finalement assez limitées... (sauf à faire un cast explicite, mais ceci me paraît exclu puisque tu ne connais pas à priori le nom de la classe)

    Si ton objet doit remplir une certaine fonction par la suite, regarde plutôt ce que t'a proposé Natha: les interfaces.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2017, 09h53
  2. Réponses: 4
    Dernier message: 25/10/2007, 16h04
  3. Conception: héritage d'une classe abstraite
    Par Kikito dans le forum Langage
    Réponses: 19
    Dernier message: 05/10/2006, 17h36
  4. ou mettre une structure utilisée par une classe
    Par grand's dans le forum C++
    Réponses: 10
    Dernier message: 28/07/2005, 18h53
  5. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45

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