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

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



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

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

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

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

membalas semua(1)
大家讲道理

Ini untuk mengelakkan panggilan terus dari luar kelas.

Oleh kerana kaedah clone mesti melaksanakan antara muka Cloneable dahulu dan kemudian menulis semula kaedah klon().

public class Test01 implements Cloneable{  
}

Anda tidak kerap menggunakan fungsi ini tetapi anda mungkin tidak mempunyai pengalaman projek yang mencukupi

Jika anda mempunyai pengalaman pengaturcaraan peringkat rendah (seperti bahasa C), anda mungkin memberi lebih perhatian kepada pelepasan memori, kemudian pelepasan sumber, dsb. Permohonan dan pelepasan mesti berlaku secara berpasangan. Walau bagaimanapun, disebabkan mesin maya di Jawa, terdapat mekanisme pengumpulan sampah, dan anda mungkin tidak pernah memberi perhatian kepada isu pelepasan memori. Sebenarnya, anda tidak perlu memberi perhatian kepada perkara ini.
Jadi, walaupun ramai yang tahu 构造函数, mereka lupa 析构函数 yang sepadan. (Seperti yang dinyatakan di atas, Java akan melepaskan memori secara automatik.)
Tetapi:
java mengeluarkan memori yang diminta oleh java.
Jika anda menggunakan java untuk memanggil c, C++ atau windows api, ini sebenarnya dipanggil JNI(Java Native Interface) Java tidak boleh melepaskan memori yang digunakan di sini secara automatik, jadi anda mungkin perlu menggunakan finalize Pelepasan selari.
Ringkasnya, ia berfungsi seperti pemusnah.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan