Fonction clone() de java

Résolu/Fermé
xman_genius Messages postés 97 Date d'inscription vendredi 14 octobre 2005 Statut Membre Dernière intervention 21 novembre 2006 - 3 mars 2006 à 12:33
 moi - 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
A voir également:

2 réponses

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
9
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. ^^
0
anawak Messages postés 53 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 1 août 2010 9
4 mars 2006 à 11:16
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(){
-4