Salut,
Plus précisément, clone() est définie de la manière suivante :
protected Object clone() throws CloneNotSupportedException;
Donc comme indiqué tu dois la redéfinir en public si tu souhaites l'utiliser depuis d'autres classes :
1 2 3 4 5
| public class Grille implements Cloneable {
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
} |
Dans le même temps, je te conseillerai de "masquer" l'exception (qui ne devrait normalement "jamais" se produire) :
1 2 3 4 5 6 7 8 9
| public class Grille implements Cloneable {
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
throw new UnsupportedOperationException(e);
}
}
} |
Cela permet d'utiliser la méthode plus facilement, sans avoir à s'embêter d'une exception inutile (UnsupportedOperationException est non-checked, donc le compilateur ne t'obligera pas à la traiter).
Enfin, à partir de Java 5.0 tu peux également changer le type de retour, afin d'éviter les multiples cast inutile :
1 2 3 4 5 6 7 8 9
| public class Grille implements Cloneable {
public Grille clone() {
try {
return (Grille) super.clone();
} catch (CloneNotSupportedException e) {
throw new UnsupportedOperationException(e);
}
}
} |
Et voilà une méthode clone() bien plus pratique à utiliser 
a++
Partager