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

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



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

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

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

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

全員に返信(1)
大家讲道理

これはクラス外からの直接呼び出しを防ぐためです。

clone メソッドは、まず Cloneable インターフェースを実装してから、 clone() メソッドを書き直す必要があるためです。

リーリー

この機能を頻繁に使用するわけではありませんが、プロジェクトの経験が十分ではない可能性があります

比較的低レベルのプログラミング経験がある場合 (C 言語など)、メモリの解放、次にリソースの解放などに注意を払うかもしれません。適用とリリースはペアで行う必要があります。ただし、Java の仮想マシンにはガベージ コレクションのメカニズムがあり、メモリ解放の問題を意識したことがないかもしれません。実際、これに特に注意を払う必要はありません。
つまり、多くの人は 构造函数 は知っていても、対応する 析构函数 を忘れてしまいます。 (前述したように、Java は自動的にメモリを解放します。)
ただし:
java は、java によって要求されたメモリを解放します。
Java を使用して C、C++、または Windows API を呼び出す場合、これは実際には JNI(Java Native Interface) と呼ばれます。Java はここで適用されたメモリを自動的に解放できないため、finalize 並列リリースを使用する必要がある場合があります。
簡単に言うと、デストラクターのように機能します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート