Les Allergies
Alimentaires
Posez votre question Signaler

Fonction clone() de java [Résolu]

xman_genius 93Messages postés 14 octobre 2005Date d'inscription - Dernière réponse le 2 avril 2011 à 20:04
slt;
j'ai un probleme avec la fonction clone()
et c'est qqn peut m'indiquer la correction merci d'avance
---------------------code-------------------------------
import java.lang.Object;
class java_test
{
public static void main(String[] args)
{
class personnel
{
String nom=new String();
String prenom=new String();
short age;
}
personnel personne1=new personnel();
personnel personne2=personne1.clone();
}
}
----------erreurs afficher par l'editeur JCreator---------
error 1:clone() has protected access in java.lang.Object
error 2:incompatible types
Lire la suite 

Fonction clone() de java »

Suggestions
3 réponses
Réponse
+6
moins plus
pour pouvoir utiliser la methode clone() il faut que ta classe implemente l'interface cloneable du package java.lang, et il n'est pas necessaire d'importer explicitement le package java.lang, c fait automatiquement par le compilateur. avant de te donner une solution, je tiens à te dire que ton programme est mal structuré : ta définie une classe (classe Personnel) à l'interieur d'une methode (main). Donc une bonne version de ton programme serai :


class Personne implements Cloneable{ // implementation de l'interface Cloneable
private String nom;
private String prenom;
private int age;

//Constructeur pour initialiser les champs prives nom et prenom
public Personne(String unNom, String unPrenom){
nom = unNom;
prenom = unPrenom;
}

// un autre constructeur qui accepte aussi l'age
public Personne(String unNom, String unPrenom, int unAge){
nom = unNom;
prenom = unPrenom;
age = unAge;
}

// la methode clone peut generer une exception CloneNotSupportedException
public Object clone() throws CloneNotSupportedException{
return super.clone();
}

public static void main(String[] atgs){
Personne myFriend = new Personne("MyFriend","TheExpert");
Personne myFriendClone = null;
try{
myFriendClone = (Personne) myFriend.clone(); // il faut réaliser un caste car la methode clone renvoie un Object.
}catch(Exception e) {
System.out.println("Erreur");
}

System.out.println(myFriend.nom + " " + myFriend.prenom);
System.out.println(myFriendClone.nom + " " + myFriendClone.prenom);
}
}


et voila c fini.
By TheExpert
moi - 2 avril 2011 à 20:04
utilisation du mot clef "this" dans le deuxième constructeur pour réutiliser la définition du premier sans avoir à réécrire les mêmes lignes de code. ^^
Ajouter un commentaire
Réponse
-4
moins plus
ben tu t'es un epu gouré.
clone() est une methode de la cloneable ,alors si tu veux utiliser close() procede comme suit:

public YourClass extends cloneable {
//declaration
//construteur

public YourClass getOtherInstance(){
Ajouter un commentaire
Ce document intitulé « fonction clone() de java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?