検索

ホームページ  >  に質問  >  本文

java - clone()方法疑问

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



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

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

// GC相关
finalize()
天蓬老师天蓬老师2837日前673

全員に返信(1)返信します

  • 大家讲道理

    大家讲道理2017-04-18 09:36:52

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

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

    リーリー

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

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

    返事
    0
  • キャンセル返事