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 :

passer une String en paramètre


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Par défaut passer une String en paramètre
    Bonjour,

    Je désirerais savoir si il est possible de passer une String en paramètre d'une fonction non pas par copie mais par référence. Y a t'il un moyen de le faire sans encapsuler l'objet ? Le fait que l'objet est passé par copie est-il bien dû au fait que la classe implémente Serializable ?
    Je désirerais également savoir si il est possible d'appeler une méthode de la super classe en dehors de la classe qui l'étend. Je m'explique : sur un objet ArrayList je voudrais appeler la méthode toString de la classe Object et non celle de AbstractList. Est-ce possible ?
    Merci d'avance !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    1. Il faut encapsuler.

    2. Euh... Aucune idée, mais à priori je ne vois pas le rapport.

    3. A priori c'est possible, je crois que la syntaxe est this.Object.toString.

  3. #3
    Membre confirmé
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Par défaut
    this.monArrayList.super.toString() ???

  4. #4
    Membre confirmé Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Par défaut re
    salut !

    Alors tu as plusieurs points dans ta question :

    pour le premier : passage par reference:

    Un rappel d'abord, En Java si tu exploite un objet il est toujours passe par reference, le cas se pose pour les type natif (int, double etc...), c'est a verifier mais je crois que contrairement a C++, il n'est pas possible de passer des parametre par reference en Java. (Essaye quand meme de placer un & devant ta variable pour voir s'il genere une erreur mais normalement on peut pas).

    Pour serializable ceci n'a rien a voir avec le passage par copie mais Serializable est une interface qui permet de dematerialiser un objet (sous forme de string) pour etre stocke sur un disque ou travaerser un reseau .

    3eme point : En Java toute les classe herite de Object et donc toutes peuvent acceder aux methodes qui y sont definies dans la classe mere Object. Cela dit, je crois (a verifier) que Object est une classe Abstraite (abstract class) et donc il faut systematiquement redefinir ses methode dans ta classe si tu veux les exploiter.

    Wdionysos

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 49
    Par défaut
    Un String est passé par référence.
    Un String est immutable. Dès que tu modifies un String, une nouvelle instance du String est crée. C'est à dire que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MaClasse mc=new MaClasse(); -> on va dire que MaClasse contient un champ String str
    String str="a";
     
    mc.setStr(str); -> tu passes en fait en paramètre l'adresse de str
    System.out.println(mc.getStr()); -> ca donne a
     
    str="b"; -> ca equivaut à str=new String("b"); donc nouvelle reference. du coup, dans mc, on pointe sur l'ancienne référence
    System.out.println(mc.getStr()); -> ca donne a
    pas facile à expliquer

  6. #6
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    La seule méthode que je connaisse pour passer des types primitifs par référence est de les encapsuler dans des "Integer, Double etc." qui eux le sont.
    +1 Pour dire que String est passé par référence.
    +1 Pour Serializable.

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Par défaut
    Super ! Merci à tous et en particulier à billou77 pour sa super explication !

  8. #8
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 49
    Par défaut
    you're welcome

    si ton probleme est résolu, mets [Résolu] dans l'intitulé de ton post stp

  9. #9
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Par défaut
    Par contre j'essaye de faire uneArrayList.super.toString() mais ça ne marche pas. Avez-vous une idée ?

  10. #10
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut Re: re
    Citation Envoyé par wdionysos
    [...]
    3eme point : En Java toute les classe herite de Object et donc toutes peuvent acceder aux methodes qui y sont definies dans la classe mere Object. Cela dit, je crois (a verifier) que Object est une classe Abstraite (abstract class) et donc il faut systematiquement redefinir ses methode dans ta classe si tu veux les exploiter.

    Wdionysos
    Faux, Object n'est pas une classe abstraite puisque tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Object o = new Object();
    Citation Envoyé par fabhxc
    Je désirerais également savoir si il est possible d'appeler une méthode de la super classe en dehors de la classe qui l'étend. Je m'explique : sur un objet ArrayList je voudrais appeler la méthode toString de la classe Object et non celle de AbstractList. Est-ce possible ?
    Non, en dehors de la classe qui l'étend, c'est impossible à cause du polymorphisme. Cela dit je ne vois pas l'intérêt d'appeler la méthode toString de Object.

  11. #11
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Par défaut Re: re
    Citation Envoyé par Descent
    Non, en dehors de la classe qui l'étend, c'est impossible à cause du polymorphisme. Cela dit je ne vois pas l'intérêt d'appeler la méthode toString de Object.
    C'est vrai ! C'était juste par curiosité !

  12. #12
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par fabhxc
    Par contre j'essaye de faire uneArrayList.super.toString() mais ça ne marche pas. Avez-vous une idée ?
    Ca ne risque pas de marcher car la référence à la superclasse d'une classe est privée, donc toutes les synthaxes qu'on t'a donnée sont fausses.

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

Discussions similaires

  1. Passer une fonction en paramètre ...
    Par Freeze dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/10/2005, 16h51
  2. Comment passer une procédure en paramètre ?
    Par gudul dans le forum Langage
    Réponses: 4
    Dernier message: 30/09/2005, 13h57
  3. Réponses: 1
    Dernier message: 15/04/2005, 11h30
  4. [Conception] Passer une fonction en paramètre
    Par pejay dans le forum Langage
    Réponses: 9
    Dernier message: 09/12/2004, 13h58
  5. Passer une procédure en paramètre ?
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 12h21

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