Hari ini, ketika saya memeriksa kode sumber, saya menemukan kelas java.lang.void. Apa fungsi ini?
Lihat terlebih dahulu melalui kode sumber
Paket java.lang;/** * Kelas {@code void} adalah kelas placeholder yang tidak dapat diinstantasikan untuk memegang referensi * ke objek {@code} yang mewakili kata kunci Java * batal. * * @Author tidak terhitung * @since jdk1.1 * /public finalclass void { /** * Objek {@code class} yang mewakili tipe pseudo yang sesuai dengan * kata kunci {@code void}. */ @Suppresswarnings ("Uncecked") Public Static Final Class <void> type = (class <void>) class.getPrimitiveClass ("void"); / * * Kelas void tidak dapat dipakai. */ private void () {}}Ditemukan dari kode sumber bahwa kelas ini bersifat final, tidak dapat diwarisi, dan konstruknya pribadi, dan tidak bisa baru.
Jadi apa fungsi kategori ini?
Berikut adalah kode sumber kelas Java.lang.integer terlebih dahulu
Kita semua tahu bahwa kelas pembungkus int adalah java.lang.integer
Dari sini kita dapat melihat bahwa java.lang.integer adalah kelas pembungkus int.
Demikian pula, melalui kode sumber berikut dari java.lang.void, kita dapat melihat bahwa java.lang.void adalah kelas pembungkus untuk kata kunci void.
Public Static Final Class <void> type = (class <void>) class.getPrimitiveClass ("void");Penggunaan batal
Kelas Void adalah kelas penampung non-institusi. Jika metode ini mengembalikan tipe void, maka metode ini hanya dapat mengembalikan tipe nol.
Contohnya adalah sebagai berikut:
public void test () {return null;}Gunakan Skenario 1:
Future <Void> f = pool.submit (new callable () {@Override public void call () melempar Exception {...... return null;}});Misalnya, menggunakan antarmuka yang dapat dipanggil, antarmuka harus mengembalikan nilai, tetapi tidak ada data yang akan dikembalikan setelah eksekusi yang sebenarnya. Saat ini, Anda dapat menggunakan jenis void sebagai tipe pengembalian.
Gunakan Skenario 2:
Mencerminkan semua metode dengan nilai pengembalian batal.
tes kelas publik {public void hello () {} public static void main (string args []) {for (metode metode: test.class.getMethods ()) {if (method.getreturnType (). Equals (void.type)) {System.println (method.getName (); }}}}Hasil Eksekusi:
MainHellowaiwaitwaitnotifynotifyall
PS: Berikut ini memperkenalkan perbandingan dan penggunaan java.lang.void dan batal
Kata kunci void berarti bahwa fungsi tidak mengembalikan hasilnya dan merupakan kata kunci di java.
java.lang.void adalah tipe. Misalnya, tetapkan nilai null ke referensi batal.
Void nil = null;
Melalui kode kelas Void, kita dapat melihat bahwa tipe void tidak dapat diwariskan atau dipakai.
Public FinalClass void { /** * Objek {@code class} yang mewakili tipe pseudo yang sesuai dengan * kata kunci {@code void}. */ @Suppresswarnings ("Uncecked") Public Static Final Class <void> type = (class <void>) class.getPrimitiveClass ("void"); / * * Kelas void tidak dapat dipakai. */ private void () {}}Batal sebagai hasil pengembalian fungsi menunjukkan bahwa fungsi mengembalikan nol (kecuali nol tidak dapat mengembalikan jenis lain).
Void function (int a, int b) {// lakukan sesuatu kembali null; }Sebelum generik muncul, void umumnya digunakan dalam refleksi. Misalnya, kode berikut mencetak nama metode dari tipe return void.
tes kelas publik {public void print (string v) {} public static void main (string args []) {for (metode metode: test.class.getMethods ()) {if (method.getReturnType (). Equals (void.type)) {System.out.println (method.getName ()); }}}} Setelah obat generik muncul, jenis void akan digunakan dalam beberapa skenario. Misalnya, Future<T> digunakan untuk menyimpan hasilnya. Metode GET Future akan mengembalikan hasil (Tipe T).
Tetapi bagaimana jika operasi tidak mengembalikan nilai? Dalam hal ini, dapat diwakili oleh Future<Void> . Ketika hasilnya dihitung setelah menelepon GET, itu akan kembali nol setelah kembali.
Selain itu, Void juga digunakan dalam peta yang tidak berharga. Misalnya, Map<T,Void> , jadi peta akan memiliki fungsi yang sama dengan Set<T> .
Oleh karena itu, ketika Anda menggunakan obat generik, fungsi tidak perlu mengembalikan hasil atau objek tidak memerlukan nilainya. Ini dapat diwakili oleh tipe java.lang.void.
Meringkaskan
Di atas adalah penjelasan terperinci tentang analisis kelas dan penggunaan java.lang.void yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!