java.lang
kelas Object
java.lang.Object
Public kelas Object
Konstruktor dan Deskripsi
Object()
protected Object
clone()
Menciptakan dan mengembalikan salinan objek ini.
boolean
equals(Object obj)
Menunjukkan apakah objek lain adalah "sama dengan"
satu ini.
protected void
finalize()
Disebut oleh kolektor sampah pada objek ketika pengumpulan
sampah menentukan bahwa tidak ada lagi referensi ke objek.
Class<?>
getClass()
Mengembalikan kelas runtime ini Object.
int
hashCode()
Mengembalikan nilai kode hash untuk objek.
void
notify()
Bangun satu thread yang menunggu di monitor ini objek.
void
notifyAll()
Bangun semua thread yang sedang menunggu di monitor ini
objek.
String
toString()
Mengembalikan representasi string objek.
void
wait()
Penyebab thread saat ini menunggu sampai thread lain
memanggil notify()metode atau notifyAll()metode untuk objek ini.
void
wait(long timeout)
Penyebab thread saat ini menunggu sampai salah thread lain
memanggil notify()metode atau notifyAll()metode untuk objek ini, atau jumlah
waktu tertentu telah berlalu.
void
wait(long timeout, int nanos)
Penyebab thread saat ini menunggu sampai thread lain
memanggil notify()metode atau notifyAll()metode untuk objek ini, atau beberapa
thread lain mengganggu thread saat, atau sejumlah real time telah berlalu.
Konstrutor detail
Obyek publik ()
metode Detil
getClass
publik akhir
Kelas getClass ()
Mengembalikan kelas runtime ini Object. Itu kembali
Classobjek adalah objek yang terkunci oleh static synchronizedmetode kelas
diwakili.
Jenis hasil yang sebenarnya adalah Class<? extends
|X|> di mana |X|adalah penghapusan jenis statis ekspresi yang
getClassdisebut. Sebagai contoh, tidak ada cast diperlukan dalam kode fragmen
ini:
Number n = 0;
Class<? extends Number> c = n.getClass();
Pengembalian:
The Classobjek yang mewakili kelas runtime obyek ini.
Lihat juga:
Literals, section 15.8.2 of The Java™ Language
Specification.
Kode hash
public int hashCode ()
Mengembalikan nilai kode hash untuk objek. Metode ini
didukung untuk kepentingan tabel hash seperti yang disediakan oleh
HashMap.Kontrak umum hashCodeyaitu:
Setiap kali dipanggil pada objek yang sama lebih dari sekali
selama eksekusi dari aplikasi Java, yang hashCodemetode harus konsisten
mengembalikan integer yang sama, tidak memberikan informasi yang digunakan
dalam equalsperbandingan pada objek yang diubah. Bilangan bulat ini tidak perlu
tetap konsisten dari satu eksekusi aplikasi untuk eksekusi lain dari aplikasi
yang sama.
Jika dua benda yang sama sesuai dengan equals(Object)
metode, kemudian memanggil hashCodemetode pada masing-masing dua benda harus
menghasilkan hasil integer yang sama.
Hal ini tidak diperlukan bahwa jika dua benda yang tidak
sama sesuai dengan equals(java.lang.Object) metode, kemudian memanggil
hashCodemetode pada masing-masing dua benda harus menghasilkan hasil bilangan
bulat yang berbeda. Namun, programmer harus menyadari bahwa memproduksi hasil
bilangan bulat yang berbeda untuk objek yang tidak sama dapat meningkatkan
kinerja tabel hash.
Sebanyak cukup praktis, metode kode hash yang didefinisikan
oleh kelas Objecttidak kembali bilangan bulat yang berbeda untuk objek yang
berbeda. (Ini biasanya dilaksanakan dengan mengubah alamat internal objek ke
integer, tetapi teknik implementasi ini tidak diperlukan oleh Java TM bahasa
pemrograman.)
Pengembalian:
nilai kode hash untuk objek ini.
Lihat juga:
equals(java.lang.Object).
System.identityHashCode(java.lang.Object)
sama
public boolean sama ( Object
obj)
Menunjukkan apakah objek lain adalah "sama dengan"
satu ini.The equalsMetode mengimplementasikan relasi ekivalen pada referensi
objek non-null:
Hal ini refleksif : untuk setiap nilai referensi non-null x,
x.equals(x)harus kembali true.
Hal ini simetris : untuk setiap nilai referensi non-null
xdan y, x.equals(y) harus kembali truejika dan hanya jika y.equals(x)kembali
true.
Hal ini transitif : untuk setiap nilai referensi non-null x,
y, dan z, jika x.equals(y)kembali truedan y.equals(z)kembali true, maka
x.equals(z)harus kembali true.
Hal ini konsisten : untuk setiap nilai referensi non-null
xdan y, beberapa doa dari x.equals(y)konsisten kembali true atau konsisten
kembali false, tidak memberikan informasi yang digunakan dalam equalsperbandingan
pada objek dimodifikasi.
Untuk setiap nilai referensi non-null x, x.equals(null)harus
kembali false.
The equalsmetode untuk kelas Objectmengimplementasikan
paling diskriminatif mungkin relasi ekivalen pada objek; yaitu, untuk setiap
nilai referensi non-null xdan y, metode ini mengembalikan truejika dan hanya
jika xdan ymerujuk pada objek yang sama ( x == ymemiliki nilai true).
Perhatikan bahwa secara umum diperlukan untuk menimpa
hashCode metode setiap kali metode ini diganti, sehingga dapat menjaga kontrak
umum untuk hashCodemetode, yang menyatakan bahwa obyek yang sama harus memiliki
kode hash yang sama.
parameter:
obj - objek referensi yang untuk membandingkan.
Pengembalian:
truejika objek ini sama dengan argumen obj; falsejika tidak.
Lihat juga:
hashCode(). HashMap
klon
dilindungi Obyek clone ()
melempar CloneNotSupportedException
Menciptakan dan mengembalikan salinan objek ini. Arti yang
tepat dari "copy" mungkin tergantung pada kelas objek. Tujuan umum
adalah bahwa, untuk objek apapun x, ekspresi:
x.clone ()! = x
akan menjadi kenyataan, dan bahwa ekspresi:
x.clone (). getClass
() == x.getClass ()
akan menjadi true, tetapi ini tidak persyaratan mutlak.
Sementara itu biasanya terjadi bahwa:
x.clone (). equals
(x)
akan true, ini bukan syarat mutlak.Dengan konvensi, obyek
dikembalikan harus diperoleh dengan menelepon super.clone. Jika kelas dan semua
superclasses nya (kecuali Object) mematuhi konvensi ini, itu akan menjadi hal
x.clone().getClass() == x.getClass().
Dengan konvensi, obyek dikembalikan oleh metode ini harus
independen dari objek ini (yang sedang kloning). Untuk mencapai kemerdekaan
ini, mungkin perlu untuk memodifikasi satu atau lebih bidang objek yang
dikembalikan oleh super.clonesebelum kembali. Biasanya, ini berarti menyalin
setiap benda bisa berubah yang terdiri dari internal "struktur dalam"
dari objek yang sedang kloning dan mengganti referensi ke obyek ini dengan
referensi ke salinan. Jika kelas hanya berisi bidang primitif atau referensi ke
obyek berubah, maka biasanya kasus bahwa ada bidang dalam objek dikembalikan
oleh super.clone kebutuhan untuk dimodifikasi.
Metode cloneuntuk kelas Objectmelakukan operasi kloning
spesifik. Pertama, jika kelas obyek ini tidak mengimplementasikan antarmuka
Cloneable, maka CloneNotSupportedExceptiondilemparkan. Perhatikan bahwa semua
array dianggap mengimplementasikan antarmuka Cloneabledan bahwa jenis
kembalinya clonemetode sebuah array tipe T[] adalah T[]di mana T adalah
referensi atau tipe primitif. Jika tidak, metode ini menciptakan sebuah contoh
baru dari kelas obyek ini dan menginisialisasi semua bidang dengan tepat isi
dari bidang yang sesuai obyek ini, seolah-olah dengan tugas; isi kolom bukan
merupakan kloning. Dengan demikian, metode ini melakukan "dangkal copy"
dari objek ini, bukan "copy dalam" operasi.
Kelas Objectsendiri tidak mengimplementasikan antarmuka
Cloneable, sehingga memanggil clonemetode pada objek yang kelas Objectakan
menghasilkan melemparkan pengecualian pada waktu berjalan.
Pengembalian:
tiruan dari hal ini.
melempar:
CloneNotSupportedException- jika kelas objek tidak mendukung
Cloneableantarmuka. Subclass yang menimpa clonemetode juga dapat membuang
pengecualian ini untuk menunjukkan bahwa sebuah contoh tidak dapat diduplikasi.
Lihat juga:
Cloneable
public String toString ()
Mengembalikan representasi string objek. Secara umum,
toStringmetode mengembalikan sebuah string yang "tekstual mewakili"
objek ini. Hasilnya harus menjadi representasi singkat tapi informatif yang
mudah bagi seseorang untuk membaca. Disarankan bahwa semua subclass menimpa
metode ini.The toStringmetode untuk kelas Object mengembalikan sebuah string
yang terdiri dari nama kelas yang objek adalah sebuah contoh, karakter di-tanda
` @', dan representasi heksadesimal unsigned kode hash objek. Dengan kata lain,
metode ini mengembalikan string sama dengan nilai dari:
getClass (). getName
() + '@' + Integer.toHexString (hashCode ())
Pengembalian:
string representasi dari objek.
notify
kekosongan akhir public memberitahukan ()
Bangun satu thread yang menunggu di monitor ini objek. Jika
ada benang menunggu objek ini, salah satunya dipilih untuk dibangunkan.
Pilihannya adalah sewenang-wenang dan terjadi pada kebijaksanaan pelaksanaan.
Sebuah thread menunggu di monitor obyek dengan memanggil salah satu
waitmetode.benang terbangun tidak akan dapat melanjutkan sampai thread saat
relinquishes kunci pada objek ini. benang terbangun akan bersaing dengan cara
biasa dengan benang lain yang mungkin secara aktif bersaing untuk menyinkronkan
pada objek ini; misalnya, benang terbangun menikmati ada hak istimewa
diandalkan atau kelemahan dalam menjadi thread berikutnya untuk mengunci objek
ini.
Metode ini hanya boleh disebut oleh thread yang adalah
pemilik dari monitor ini objek. Sebuah thread menjadi pemilik monitor objek di
salah satu dari tiga cara:
Dengan mengeksekusi metode contoh disinkronkan dari objek
itu.
Dengan mengeksekusi tubuh seorang synchronizedpernyataan
yang mensinkronisasikan pada objek.
Untuk objek tipe Class,dengan mengeksekusi metode statis
disinkronisasi dari kelas itu.
Hanya satu thread pada suatu waktu dapat memiliki monitor
yang obyek.
melempar:
IllegalMonitorStateException - jika thread saat ini tidak
pemilik monitor ini objek.
Lihat juga:
notifyAll(). wait()
notifyAll
public final void notifyAll ()
Bangun semua thread yang sedang menunggu di monitor ini
objek. Sebuah thread menunggu di monitor obyek dengan memanggil salah satu
waitmetode.benang yang terbangun tidak akan dapat melanjutkan sampai thread
saat relinquishes kunci pada objek ini. benang yang terbangun akan bersaing
dengan cara biasa dengan benang lain yang mungkin secara aktif bersaing untuk
menyinkronkan pada objek ini; misalnya, benang terbangun tidak menikmati hak
istimewa diandalkan atau kelemahan dalam menjadi thread berikutnya untuk
mengunci objek ini.
Metode ini hanya boleh disebut oleh thread yang adalah
pemilik dari monitor ini objek. Lihat notifymetode untuk deskripsi dari cara di
mana thread dapat menjadi pemilik monitor.
melempar:
IllegalMonitorStateException - jika thread saat ini tidak
pemilik monitor ini objek.
Lihat juga:
notify(). wait()
Tunggu
public void akhir menunggu (timeout panjang)
melempar InterruptedException
Penyebab thread saat ini menunggu sampai salah thread lain
memanggil notify()metode atau notifyAll()metode untuk objek ini, atau jumlah
waktu tertentu telah berlalu.
Thread saat ini harus memiliki monitor ini objek.
Metode ini menyebabkan thread saat ini (menyebutnya T )
untuk menempatkan dirinya dalam wait menunggu objek ini dan kemudian melepaskan
setiap dan semua klaim sinkronisasi pada objek ini. Thread T menjadi
dinonaktifkan untuk tujuan penjadwalan benang dan tertidur sampai salah satu
dari empat hal terjadi:
Beberapa thread lain memanggil notifymetode untuk objek ini
dan benang T terjadi secara sewenang-wenang dipilih sebagai benang untuk
dibangunkan.
Beberapa thread lain memanggil notifyAllmetode untuk objek
ini.
Beberapa thread lain menyela benang T .
Jumlah tersebut ditentukan dari real time telah berlalu,
lebih atau kurang. Jika timeoutadalah nol, bagaimanapun, maka real time tidak
dipertimbangkan dan benang hanya menunggu sampai diberitahu.
Benang T kemudian dikeluarkan dari status wait menunggu objek
ini dan diaktifkan kembali untuk penjadwalan benang. Kemudian bersaing dengan
cara biasa dengan benang lain untuk hak untuk melakukan sinkronisasi pada
objek; setelah telah menguasai objek, semua klaim sinkronisasi pada objek yang
dikembalikan ke status quo ante - yaitu, untuk situasi seperti waktu yang wait
metode itu dipanggil. Thread T kemudian kembali dari doa para waitmetode.
Dengan demikian, pada kembali dari waitmetode, negara sinkronisasi objek dan
benang Tadalah persis seperti itu ketika waitmetode itu dipanggil.
Sebuah thread juga bisa bangun tanpa diberitahu, terganggu,
atau waktu keluar, yang disebut wakeup palsu . Sementara ini akan jarang
terjadi dalam praktek, aplikasi harus waspada terhadap hal itu dengan menguji
kondisi yang seharusnya menyebabkan benang untuk dibangunkan, dan terus
menunggu jika kondisi tidak puas. Dengan kata lain, menunggu harus selalu
terjadi pada loop, seperti ini:
disinkronkan
(obj) {
sementara
(<kondisi tidak memegang>)
obj.wait
(timeout);
... //
Melakukan tindakan yang tepat untuk kondisi
}
(Untuk informasi lebih lanjut tentang topik ini, lihat
Bagian 3.2.3 di "Concurrent Programming di Jawa (Second Edition)"
Doug Lea (Addison-Wesley, 2000), atau Butir 50 di Joshua Bloch "Pemrograman
Java Efektif Language Guide" (Addison- Wesley, 2001).
Jika thread saat ini terganggu oleh benang sebelum atau
ketika sedang menunggu, maka InterruptedExceptiondilemparkan. Pengecualian ini
tidak dilempar sampai status kunci dari objek ini telah dipulihkan seperti
dijelaskan di atas.
Perhatikan bahwa waitmetode, karena memberikan thread saat
ini ke dalam wait menunggu objek ini, membuka hanya objek ini; benda lain yang
thread saat ini dapat disinkronkan tetap terkunci sementara thread menunggu.
Metode ini hanya boleh disebut oleh thread yang adalah
pemilik dari monitor ini objek. Lihat notifymetode untuk deskripsi dari cara di
mana thread dapat menjadi pemilik monitor.
parameter:
timeout - waktu maksimum untuk menunggu dalam milidetik.
melempar:
IllegalArgumentException - jika nilai batas waktu negatif.
IllegalMonitorStateException - jika thread saat ini bukan
pemilik monitor objek.
InterruptedException- jika ada benang terputus benang saat
sebelum atau saat thread saat ini sedang menunggu pemberitahuan. The Status
terputus dari benang saat dibersihkan ketika pengecualian ini dilemparkan.
Lihat juga:
notify(). notifyAll()
Tunggu
public void akhir menunggu (timeout panjang,
int nano)
melempar InterruptedException
Penyebab thread saat ini menunggu sampai thread lain
memanggil notify()metode atau notifyAll()metode untuk objek ini, atau beberapa
thread lain mengganggu thread saat, atau sejumlah real time telah berlalu.
Metode ini mirip dengan waitmetode satu argumen, tetapi
memungkinkan kontrol yang lebih baik atas jumlah waktu untuk menunggu
pemberitahuan sebelum menyerah. Jumlah real time, diukur dalam nanodetik,
diberikan oleh:
1000000 * batas waktu
+ nano
Dalam semua hal lainnya, metode ini melakukan hal yang sama
sebagai metode wait(long)dari satu argumen. Secara khusus, wait(0, 0)berarti
hal yang sama seperti wait(0).
Thread saat ini harus memiliki monitor ini objek. Benang
rilis kepemilikan monitor ini dan menunggu sampai salah satu dari dua kondisi
berikut telah terjadi:
Thread lain memberitahukan benang menunggu monitor ini objek
untuk bangun baik melalui panggilan ke notifymetode atau notifyAllmetode.
Batas waktu, yang ditentukan oleh timeout milidetik ditambah
nanosargumen nanodetik, telah berlalu.
benang kemudian menunggu sampai dapat memperoleh kembali
kepemilikan monitor dan resume eksekusi.
Seperti dalam satu versi argumen, menyela dan wakeups palsu
yang mungkin, dan metode ini harus selalu digunakan dalam satu lingkaran:
disinkronkan
(obj) {
sementara
(<kondisi tidak memegang>)
obj.wait
(timeout, nano);
... //
Melakukan tindakan yang tepat untuk kondisi
}
Metode ini hanya boleh disebut oleh thread yang adalah
pemilik dari monitor ini objek. Lihat notifymetode untuk deskripsi dari cara di
mana thread dapat menjadi pemilik monitor.
parameter:
timeout - waktu maksimum untuk menunggu dalam milidetik.
nanos - waktu tambahan, dalam nanodetik berkisar 0-999.999.
melempar:
IllegalArgumentException - jika nilai timeout negatif atau
nilai nano tidak dalam kisaran 0-999.999.
IllegalMonitorStateException - jika thread saat ini tidak
pemilik monitor ini objek.
InterruptedException- jika ada benang terputus benang saat
sebelum atau saat thread saat ini sedang menunggu pemberitahuan. The Status
terputus dari benang saat dibersihkan ketika pengecualian ini dilemparkan.
Tunggu
public final void menunggu ()
melempar InterruptedException
Penyebab thread saat ini menunggu sampai thread lain
memanggil notify()metode atau notifyAll()metode untuk objek ini. Dengan kata
lain, metode ini berperilaku persis seperti jika itu hanya melakukan panggilan
wait(0).
Thread saat ini harus memiliki monitor ini objek. Benang
rilis kepemilikan monitor ini dan menunggu sampai thread lain memberitahukan
benang menunggu monitor ini objek untuk bangun baik melalui panggilan ke
notifymetode ataunotifyAllmetode. Benang kemudian menunggu sampai dapat
memperoleh kembali kepemilikan monitor dan resume eksekusi.
Seperti dalam satu versi argumen, menyela dan wakeups palsu
yang mungkin, dan metode ini harus selalu digunakan dalam satu lingkaran:
disinkronkan
(obj) {
sementara
(<kondisi tidak memegang>)
obj.wait
();
... //
Melakukan tindakan yang tepat untuk kondisi
}
Metode ini hanya boleh disebut oleh thread yang adalah
pemilik dari monitor ini objek. Lihat notifymetode untuk deskripsi dari cara di
mana thread dapat menjadi pemilik monitor.
melempar:
IllegalMonitorStateException - jika thread saat ini bukan
pemilik monitor objek.
InterruptedException- jika ada benang terputus benang saat
sebelum atau saat thread saat ini sedang menunggu pemberitahuan. The Status
terputus dari benang saat dibersihkan ketika pengecualian ini dilemparkan.
Lihat juga:
notify(). notifyAll()
menyelesaikan
void dilindungi menyelesaikan ()
melempar Throwable
Disebut oleh kolektor sampah pada objek ketika pengumpulan
sampah menentukan bahwa tidak ada lagi referensi ke objek. Sebuah subclass
menimpa finalizemetode untuk membuang sumber daya sistem atau untuk melakukan
pembersihan lainnya.Kontrak umum finalizeadalah bahwa hal itu dipanggil jika
dan ketika Java TM mesin virtual telah menetapkan bahwa tidak ada lagi cara
apapun dengan mana objek ini dapat diakses oleh setiap thread yang belum mati,
kecuali sebagai akibat dari tindakan yang dilakukan dengan finalisasi beberapa
objek lain atau kelas yang siap untuk diselesaikan. The finalizeMetode dapat
mengambil tindakan apapun, termasuk membuat objek ini tersedia lagi untuk
benang lain; tujuan biasa finalize, bagaimanapun, adalah untuk melakukan
tindakan pembersihan sebelum objek tersebut tidak dapat ditarik kembali
dibuang. Sebagai contoh, metode finalisasi untuk sebuah objek yang mewakili
koneksi input / output mungkin melakukan transaksi I / O eksplisit untuk
memutuskan sambungan sebelum objek secara permanen dibuang.
The finalizemetode kelas Objectmelakukan tindakan khusus;
itu hanya mengembalikan normal. Subclass dari Objectmungkin menimpa definisi
ini.
Bahasa pemrograman Java tidak menjamin yang thread akan
memanggil finalizemetode untuk setiap objek tertentu. Hal ini dijamin,
bagaimanapun, bahwa benang yang memanggil merampungkan tidak akan mengadakan
setiap dilihat pengguna kunci sinkronisasi ketika finalize dipanggil. Jika
eksepsi tidak tertangkap dilemparkan dengan metode finalize, pengecualian
diabaikan dan finalisasi objek yang berakhir.
Setelah finalizemetode telah dipanggil untuk sebuah objek,
tidak ada tindakan lebih lanjut yang diambil sampai mesin virtual Java telah
kembali menetapkan bahwa tidak ada lagi cara apapun dengan mana objek ini dapat
diakses oleh setiap thread yang belum meninggal, termasuk tindakan yang mungkin
oleh benda-benda lain atau kelas yang siap untuk diselesaikan, di mana titik
objek dapat dibuang.
The finalizeMetode ini tidak pernah dipanggil lebih dari
sekali oleh mesin virtual Java untuk setiap objek tertentu.
Setiap pengecualian dilemparkan oleh finalizemetode
menyebabkan finalisasi objek ini harus dihentikan, tetapi sebaliknya diabaikan.
melempar:
Throwable- yang Exceptiondibesarkan oleh metode ini