Fonction clone() de java
Résolu
xman_genius
Messages postés
97
Date d'inscription
Statut
Membre
Dernière intervention
-
moi -
moi -
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
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:
- Fonction clone() de java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Fonction si et - Guide
- Clone disque dur - Guide
- Clone cd - Télécharger - Gravure
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
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
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. ^^