Clonage - Java - Programmation
Marsh Posté le 08-07-2002 à 14:58:08
bin ca veut dire ce que ca veut dire. clone() est protected ce qui signifie que tu ne peux l'overrider que si tu étends Objetc ou un de ces sous objets
Or là tu lui donne un accès public ce qui est faut. Le code suivant devrait marcher mieux
Code :
|
Marsh Posté le 08-07-2002 à 15:15:36
euh, j'ai tjs la meme erreur
Et en plus si je met "protected" comment pourrais-je me servir de cette methode (mon .clone() a moi) en dehors de cette classe (ce que je veux faire) ???
Pis tous les exemples que j'ai trouv'e ils mettent public (genre la: http://deptinfo.unice.fr/~grin/mes [...] entsTA.pdf )
Enfin, merci qd meme...
Marsh Posté le 08-07-2002 à 15:20:10
Tamahome a écrit a écrit : Pis tous les exemples que j'ai trouv'e ils mettent public (genre la: http://deptinfo.unice.fr/~grin/mes [...] entsTA.pdf ) |
Dis une question tu sais lire ?
Citation : |
Je suis désolé je vois pas de public là dedans ...
Marsh Posté le 08-07-2002 à 15:27:03
Tamahome a écrit a écrit : Et en plus si je met "protected" comment pourrais-je me servir de cette methode (mon .clone() a moi) en dehors de cette classe (ce que je veux faire) ??? |
bin si tu définis clone() dans ta classe tu pourras l'appeller sur ton instance. C'est le but de clone d'ailleurs ... Cloner l'instance sur laquelle tu l'appelles
Et puis en ce qui concerne les droits tu peux appeller cette méthode si tu hérites de java.lang.Object. Or tout objet Java étend de java.lang.Object directement ou indirectement ...
Tu ne confondrais pas méthode protégée et classe protégée ???
Marsh Posté le 08-07-2002 à 16:03:51
DarkLord a écrit a écrit : bin si tu définis clone() dans ta classe tu pourras l'appeller sur ton instance. C'est le but de clone d'ailleurs ... Cloner l'instance sur laquelle tu l'appelles ![]() Et puis en ce qui concerne les droits tu peux appeller cette méthode si tu hérites de java.lang.Object. Or tout objet Java étend de java.lang.Object directement ou indirectement ... Tu ne confondrais pas méthode protégée et classe protégée ??? |
ah si, merci pour cette info
Marsh Posté le 08-07-2002 à 16:05:45
DarkLord a écrit a écrit : Dis une question tu sais lire ?
|
Regarde plutot l'exemple sur le clonage en profondeur...c'est du public pour eux...
Le surface je suis dáccord ca marche qussi chez moi. MAis moi c'est le clonoge en profondeur qui m'interresse...
Marsh Posté le 08-07-2002 à 16:12:18
ok bin ca vient simplement du fait, il me semble que tu veux cloner en profondeur mais ton objet là il hérite d'Objet directement.
Donc en faisant ca
Code :
|
c'est ca le problème. Si tu regarde bien l'exemple du lien c'est pas ca qu'il fait ... Ceci dit c'est vrai que c'est étrange ce truc .... mmm
Marsh Posté le 08-07-2002 à 16:26:31
DarkLord a écrit a écrit : ok bin ca vient simplement du fait, il me semble que tu veux cloner en profondeur mais ton objet là il hérite d'Objet directement. Donc en faisant ca
|
Yep je comprend pas trop... Et dans un autre site il explique peu ou prou la meme chose:
Enfin c'est ce que j'ai compris.
L'objet se clone, mais pas les membres...
Marsh Posté le 08-07-2002 à 16:29:49
bin si tu as un objet qui hérite d'objet et qui contient deux membres tu dois
faire un super.clone() pour cloner les parties qui proviennet de la classe parente
cloner le membre 1
cloner le membre 2.
Enfin a priori c'est ce que je ferais ...
Marsh Posté le 08-07-2002 à 16:38:31
DarkLord a écrit a écrit : bin si tu as un objet qui hérite d'objet et qui contient deux membres tu dois faire un super.clone() pour cloner les parties qui proviennet de la classe parente cloner le membre 1 cloner le membre 2. Enfin a priori c'est ce que je ferais ... |
c exact
Marsh Posté le 09-07-2002 à 08:30:14
HappyHarry a écrit a écrit : c exact |
c bien ce ke j'avais compris, mais ca marche pas...doit y avoir une erreur de syntaxe toute conne qui me passe sous le nez comme un gros n00b...
Marsh Posté le 09-07-2002 à 08:40:39
Ben, les membres, leur méthode clone() est protégée, puisqu'elle est fatalement une redéfinition de la méthode clone() de java.lang.Object, non??
Donc, si tu veux pouvoir l'appeller, il faut le faire depuis une classe qui appartient au MEME PACKAGE que la classe!
Donc, par exemple, tu ne peux pas appeller toto.clone() si toto est une String, à moins que tu ne le fasses depuis une classe de java.lang
Donc voilà.
Marsh Posté le 09-07-2002 à 10:00:17
gfive a écrit a écrit : Ben, les membres, leur méthode clone() est protégée, puisqu'elle est fatalement une redéfinition de la méthode clone() de java.lang.Object, non?? Donc, si tu veux pouvoir l'appeller, il faut le faire depuis une classe qui appartient au MEME PACKAGE que la classe! Donc, par exemple, tu ne peux pas appeller toto.clone() si toto est une String, à moins que tu ne le fasses depuis une classe de java.lang Donc voilà. |
mais enfin .... Comment tu fais pour cloner un objet alors ?
Marsh Posté le 09-07-2002 à 11:30:08
Dark : ah, ça, je sais pas!! D Mais pas en appellant clone() en dehors de son package, en tout cas, ça, c'est sûr : essaie, tu verra : tu te fais une classe Test avec un attribut String, et tu essaies de lui écrire une méthode clone()..qui appelle clone() sur la String, ben le compilateur va te jeter!!
Alors le mieux...C'est de pas utiliser clone()!!
Tu te crées un constructeur
public Toto(Toto toto) {
}
Ou alors, si tu veux un truc plus dynamique, tu te crées une méthode copy(), par exemple...Mais bon,; protected, ça limite l'accès aux classes du package, point barre....dans cette optique, effectivement, clone() est inutilisable...A voir dans les forums de sun, ou de JGuru, non??
et dedans, tu fais les copies qui vont bien...
Je sais, c'est lourd,
Marsh Posté le 09-07-2002 à 11:49:26
mais où est l'intéret de clone alors non didjo ...
Marsh Posté le 09-07-2002 à 12:03:57
Ben, justement, j'écrivais qaue je me le demandais, et qu'il faudrait aller voir sur jGuru ou un truc comme ça, quand j'ai fourbeusement rippé sur tab, puis sur entrée!!
Et comme je m'en suis pas aperçu tout de suite, ben ouala, quoi!
Marsh Posté le 08-07-2002 à 14:42:28
salut
j'ai un pbm lorsque je veux cloner en profondeur (clones les agregats):
le super.clone(); marche bien mais les .clone() qui doivent suivre (un pour chaque membre de ma classe) ne marche pas ... ca me sort "clone() has protected access in java.lang.Object" et je comprend pas pkoi.
Voici le squellette de ma classe (en simplifier):