Maison  >  Article  >  Java  >  Comment utiliser la méthode clone() en Java au lieu du nouveau mot-clé ?

Comment utiliser la méthode clone() en Java au lieu du nouveau mot-clé ?

WBOY
WBOYavant
2023-04-22 19:55:061396parcourir

Utilisez clone() au lieu de new

La manière la plus courante de créer une nouvelle instance d'objet en Java est d'utiliser le nouveau mot-clé. La prise en charge de new par JDK est très bonne. Lorsque vous utilisez le mot-clé new pour créer des objets légers, cela est très rapide. Cependant, pour les objets lourds, le temps d'exécution du constructeur peut être plus long car l'objet peut effectuer certaines opérations complexes et chronophages dans le constructeur. Le système ne peut donc pas obtenir un grand nombre d’instances à court terme. Pour résoudre ce problème, vous pouvez utiliser la méthode Object.clone(). La méthode

Object.clone() peut contourner le constructeur et copier rapidement une instance d'objet. Cependant, par défaut, l'instance générée par la méthode clone() n'est qu'une copie superficielle de l'objet original.

Je dois mentionner ici que Java ne transfère que par valeur. Concernant ce point, je crois comprendre que les types de données de base font référence à des valeurs et que les objets ordinaires font également référence à des valeurs. Cependant, la valeur référencée par cet objet ordinaire est en fait l'adresse. d'un objet. Exemple de code :

int i = 0; int j = i; //i的值是0  User user1 = new User();  User user2 = user1; //user1值是new User()的内存地址

Si vous avez besoin d'une copie complète, vous devez réimplémenter la méthode clone(). Jetons un coup d'œil à la méthode clone() implémentée par ArrayList :

public Object clone() {                try {             ArrayList<?> v = (ArrayList<?>) super.clone();             v.elementData = Arrays.copyOf(elementData, size);             v.modCount = 0;                         return v;         } catch (CloneNotSupportedException e) {                         // this shouldn't happen, since we are Cloneable             throw new InternalError(e);         }     }

Dans la méthode clone() d'ArrayList, utilisez d'abord la méthode super.clone() pour générer un objet de copie superficielle. Copiez ensuite un nouveau tableau elementData pour que la nouvelle ArrayList fasse référence. Faites en sorte que l'objet ArrayList cloné contienne des références différentes de l'objet d'origine, réalisant ainsi une copie complète.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer