java - clone()方法疑问
天蓬老师
天蓬老师 2017-04-18 09:34:52
0
1
653

我们知道Object基类有如下的方法:
问题一:
为什么唯独clone方法,在源码中要定义成protected呢?其他定义成public的呢?
问题二:
finalize()这个方法好像在项目中很少被用到,但是它能够被定义到基类当中,说明其重要性是很高的,那么这个具体如何使用?在什么情况下,必须使用,非用不可呢??



// 对象相关
getClass()
clone() - protected
toString()
equals(Object)
hashCode()

// 线程相关
notify()
notifyAll()
wait([long[, int]])

// GC相关
finalize()
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(1)
大家讲道理

Cela permet d'éviter les appels directs provenant de l'extérieur de la classe.

Parce que la méthode clone doit d'abord implémenter l'interface Cloneable puis réécrire la méthode clone().

public class Test01 implements Cloneable{  
}

Vous n'utilisez pas souvent cette fonction mais vous n'avez peut-être pas suffisamment d'expérience en projet

Si vous avez une expérience en programmation de niveau relativement faible (comme le langage C), vous pouvez accorder plus d'attention à la libération de mémoire, puis à la libération de ressources, etc. L’application et la publication doivent se produire par paires. Cependant, en raison de la machine virtuelle Java, il existe un mécanisme de récupération de place et vous n'avez peut-être jamais prêté attention au problème de libération de mémoire. En fait, vous n’avez pas vraiment besoin d’y prêter attention.
Donc, alors que beaucoup de gens connaissent 构造函数, ils oublient le 析构函数 correspondant. (Comme mentionné ci-dessus, Java libérera automatiquement de la mémoire.)
Mais :
java libère la mémoire demandée par java.
Si vous utilisez Java pour appeler l'API C, C++ ou Windows, cela s'appelle en fait JNI(Java Native Interface) Java ne peut pas libérer automatiquement la mémoire appliquée ici, vous devrez donc peut-être utiliser finalize Version parallèle.
Pour faire simple, cela fonctionne comme un destructeur.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal