CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] methode toString

march99
march99
Niveau 10
13 décembre 2007 à 17:26:38

Bonjour ,
Voila je suis en train de creer un programme et dans une class j´utilise la methode toString pour renvoyer le nom de l´objet . Dans une autre classe je fait comme suis :
String chaine = objet.toString();
Mais sa ne veut pas marcher :-( ( je voulais que dans chaine je puisse avoir la valeur de l´attribut nom de l´objet )
Quelqu´un peut t´il m´aider?

Banedon_421
Banedon_421
Niveau 8
13 décembre 2007 à 18:45:42

Qu´entends-tu par "le nom de l´objet". Si tu entends par là une quelconque variable de classe (un string par exemple) qui se trouve dans ton objet et que tu renvoie en redefinissant la methode toString(), alors il faudra plus d´info parceque je ne vois pas de problème.

En revanche, si, pas "le nom de l´objet", tu veux dire le nom que tu tappe lorsque tu crée ton code, sache qu´il n´est en aucun cas accessible (il y a peut-etre un moyen, mais je ne le connais pas, et tu devrais eviter de toute façon de vouloir obtenir ce genre d´informations). Si nous sommes bien dans ce cas, je te conseille d´abandonner l´idée.

Kaoron
Kaoron
Niveau 9
13 décembre 2007 à 18:59:00

String chaine = objet; devrait suffire

toString() n´est pas destinée à être appelée. :)

TATOFOREVER
TATOFOREVER
Niveau 8
13 décembre 2007 à 18:59:38

Que veux tu dire par ca ne veut pas marcher?
Ca compile pas, erreur de logique, etc?

Utilice un constructeur pour initialiser tes membres.
Overload-le si tu veux lui donner un paramettre specifique dans la creation de ton objet.
Et tu invoques le constructeur quand tu crees l´objet.
@+

Kaoron
Kaoron
Niveau 9
13 décembre 2007 à 19:20:03

"En revanche, si, pas "le nom de l´objet", tu veux dire le nom que tu tappe lorsque tu crée ton code, sache qu´il n´est en aucun cas accessible"

Ah ?
myobject.getClass().getName()

"(il y a peut-etre un moyen, mais je ne le connais pas, et tu devrais eviter de toute façon de vouloir obtenir ce genre d´informations)"

Je te rassure tout de suite, ce n´est pas contraire aux lois internationales de chercher à connaitre le nom de la classe d´un objet. Mystifier le code, c´est le meilleur moyen de ne pas le comprendre.

"Si nous sommes bien dans ce cas, je te conseille d´abandonner l´idée."

Dommage...

http://java.sun.com/reference/api/ <= La meilleure ressource java, c´est encore là

Kaoron
Kaoron
Niveau 9
13 décembre 2007 à 19:25:55

class Bump
{
public static void main(String args[])
{
foo bar= new foo();
System.out.println(bar);
System.out.println(bar.getClass().getName());
}
}
class foo
{ public foo(){}
public String toString()
{ return "je suis foo";
}
}

Voilà! :)

godrik
godrik
Niveau 30
13 décembre 2007 à 19:38:08

oh oui, j´aime mettre les choses en string!!

Par defaut toString renvoie le hash de l´objet sous la forme d´une chaine de caractere. C´est un peu l´information interne qu´utilise la JVM pour l´identifier de facon unique.

Banedon_421
Banedon_421
Niveau 8
13 décembre 2007 à 19:52:27

" myobject.getClass().getName() "

Cà, c´est le nom de la CLASSE de l´objet. Si c´est ce qu´il veut, tant mieux. Moi, j´avais plutot l´impression qu´il cherchait autre chose, enfin j´ai du me tromper ^^´ .

Kaoron
Kaoron
Niveau 9
13 décembre 2007 à 20:06:51

@Banedon_421 : En effet, je n´avais pas bien saisi que quoi tu parlais.
Le nom donné à la variable qui contient la référence de l´instance, si c´est de ça que tu parles, doit plus certainement être modifié à la compilation.
Et de toutes façons, ce n´est qu´une variable qui peut être amenée à contenir une autre référence, et l´objet en question peut-être référencé par d´autres variables... récupérer ce nom n´est donc pas intéressant et peut amener à des conceptions bancales. Je doute que ce soit ce qui est recherché, mais si c´est le cas tu as raison de préciser que c´est une mauvaise voie (encore faut-il l´expliquer :) ).

Sinon pour récupérer l´identifiant de l´objet, c´est un hashcode comme l´a souligné godrik, qu´on peut visualiser par la méthode toString() non surchargée. Celle ci fonctionne comme suit :
getClass().getName() + ´@´ + Integer.toHexString(hashCode())

hashCode() est une méthode de Object qui renvoie un int.

Kaoron
Kaoron
Niveau 9
13 décembre 2007 à 20:40:23

Note : Après relecture, le hashcode n´est pas nécessairement l´identifiant utilisé par la JVM (c´est une technique fréquemment utilisée, mais ce n´est pas une obligation pour la machine java).
Enfin bon, pour en saovoir plus :
http://java.sun.com/javase/6/docs/api/java/lang/Object.html#hashCode()

march99
march99
Niveau 10
13 décembre 2007 à 23:51:38

Iop merci tout le monde mais je suis dans un cas speciale de toutefacon ^^
=> encore en apprentissage ( iut info ) et je doit creer des classes sans utiliser d´autre methode que celle de l´enonce :-( ´ ou alors je les mets en private) . Sachant qu´il nous demande pas de methode getNom() et qu´on a besoisn du nom de l´objet je voulais utiliser toString . D´ailleur je l´ai fait et sa marche :-)(comme sa : "nom de lobjet creer.toString(); ) Apres a savoir si c´est bien ou pas ^^
En tout cas merci pour vos reponses ´

Fenix[74]
Fenix[74]
Niveau 10
14 décembre 2007 à 17:02:30

Godrik > "oh oui, j´aime mettre les choses en string!!"
Haha. Je confirme. ;p

Kaoron
Kaoron
Niveau 9
14 décembre 2007 à 19:47:38

"Haha. Je confirme. ;p "
Vécu? :D

godrik
godrik
Niveau 30
15 décembre 2007 à 01:51:19

J´aime bien Fenix[74] mais pas a ce point... :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment