วันนี้เมื่อฉันตรวจสอบซอร์สโค้ดฉันค้นพบคลาส java.lang.void ฟังก์ชั่นนี้คืออะไร?
ตรวจสอบก่อนผ่านซอร์สโค้ด
แพ็คเกจ java.lang;/** * คลาส {@code void} คลาสเป็นคลาสที่ไม่สามารถรักษาได้ในคลาสของตัวยึดตำแหน่งที่จะเก็บ A * อ้างอิงไปยังวัตถุ {@code class} ที่แสดงถึงคำหลัก Java * เป็นโมฆะ * * @author unaccounted * @since Jdk1.1 * /public finalclass เป็นโมฆะ { /** * วัตถุ {@code class} แสดงถึงประเภท pseudo-type ที่สอดคล้องกับ * คำหลัก {@code void} */ @suppresswarnings ("ไม่ได้ตรวจสอบ") คลาสสุดท้ายคงที่ระดับสุดท้าย <Void> type = (คลาส <void>) class.getPrimitiveClass ("void"); / * * คลาสโมฆะไม่สามารถสร้างอินสแตนซ์ได้ */ private void () {}}พบได้จากซอร์สโค้ดว่าคลาสนี้เป็นที่สิ้นสุดไม่สามารถสืบทอดได้และโครงสร้างเป็นส่วนตัวและไม่สามารถใหม่ได้
ฟังก์ชั่นของหมวดหมู่นี้คืออะไร?
นี่คือซอร์สโค้ดของคลาส java.lang.integer ก่อน
เราทุกคนรู้ว่าคลาส wrapper ของ int คือ java.lang.integer
จากนี้เราจะเห็นได้ว่า java.lang.integer เป็นคลาส wrapper ของ int
ในทำนองเดียวกันผ่านซอร์สโค้ดที่มาต่อไปนี้ของ java.lang.void เราจะเห็นว่า java.lang.void เป็นคลาส wrapper สำหรับคำหลักที่เป็นโมฆะ
ระดับสุดท้ายระดับสุดท้าย <Void> type = (คลาส <void>) class.getPrimitiveClass ("void");โมฆะการใช้งาน
คลาสโมฆะเป็นคลาสที่ไม่ได้รับการควบคุม หากวิธีการส่งคืนประเภทโมฆะวิธีการสามารถส่งคืนประเภทโมฆะเท่านั้น
ตัวอย่างมีดังนี้:
การทดสอบโมฆะสาธารณะ () {return null;}ใช้สถานการณ์ 1:
อนาคต <void> f = pool.submit (ใหม่ callable () {@Override public void call () พ่นข้อยกเว้น {...... return null;}});ตัวอย่างเช่นการใช้อินเทอร์เฟซ callable อินเตอร์เฟสจะต้องส่งคืนค่า แต่ไม่มีข้อมูลที่จะส่งคืนหลังจากการดำเนินการจริง ในเวลานี้คุณสามารถใช้ประเภทโมฆะเป็นประเภทการส่งคืน
ใช้สถานการณ์ 2:
สะท้อนวิธีการทั้งหมดด้วยโมฆะค่าส่งคืน
การทดสอบระดับสาธารณะ {โมฆะสาธารณะ hello () {} โมฆะคงที่สาธารณะหลัก (สตริง args []) {สำหรับ (วิธีการ: test.class.getMethods ()) {ถ้า (method.getReturntype (). เท่ากับ (void.type)) {system.out.println (method.getName (); -ผลการดำเนินการ:
Mainhellowaiwaitwaitnotifynotifyall
PS: ต่อไปนี้แนะนำการเปรียบเทียบและการใช้ java.lang.void และ void
คำหลักเป็นโมฆะหมายความว่าฟังก์ชั่นจะไม่ส่งคืนผลลัพธ์และเป็นคำหลักใน Java
java.lang.void เป็นประเภท ตัวอย่างเช่นกำหนดค่าของ null ให้กับการอ้างอิงเป็นโมฆะ
เป็นโมฆะ nil = null;
ผ่านรหัสของคลาสโมฆะเราจะเห็นว่าประเภทโมฆะไม่สามารถสืบทอดหรือสร้างอินสแตนซ์ได้
โมฆะ FinalClass สาธารณะ { /** * วัตถุ {@code class} แสดงถึงประเภท pseudo ที่สอดคล้องกับ * คำหลัก {@code void} */ @suppresswarnings ("ไม่ได้ตรวจสอบ") คลาสสุดท้ายคงที่ระดับสุดท้าย <Void> type = (คลาส <void>) class.getPrimitiveClass ("void"); / * * คลาสโมฆะไม่สามารถสร้างอินสแตนซ์ได้ */ private void () {}}เป็นโมฆะเมื่อผลการส่งคืนของฟังก์ชั่นระบุว่าฟังก์ชันส่งคืนค่า null (ยกเว้น NULL ไม่สามารถส่งคืนประเภทอื่นได้)
ฟังก์ชั่นโมฆะ (int a, int b) {// ทำสิ่งที่ส่งคืนโมฆะ; -ก่อนที่จะปรากฏตัวทั่วไปเป็นโมฆะโดยทั่วไปจะใช้ในการสะท้อน ตัวอย่างเช่นรหัสต่อไปนี้พิมพ์ชื่อวิธีของโมฆะประเภทการส่งคืน
การทดสอบระดับสาธารณะ {public void print (String V) {} โมฆะคงที่สาธารณะหลัก (String args []) {สำหรับ (วิธีการ: test.class.getMethods ()) {ถ้า (method.getReturntype (). เท่ากับ (void.type)) {system.out.println - หลังจากปรากฏตัวทั่วไปจะใช้โมฆะประเภทจะถูกใช้ในบางสถานการณ์ ตัวอย่างเช่น Future<T> ใช้เพื่อบันทึกผลลัพธ์ วิธีการรับของอนาคตจะส่งคืนผลลัพธ์ (Type T)
แต่ถ้าการดำเนินการไม่ส่งคืนค่า? ในกรณีนี้สามารถแสดงได้ด้วย Future<Void> เมื่อผลลัพธ์ถูกคำนวณหลังจากการโทร Get มันจะส่งคืนค่า null หลังจากกลับมา
นอกจากนี้ Void ยังใช้ในแผนที่ไร้ค่า ตัวอย่างเช่น Map<T,Void> ดังนั้นแผนที่จะมีฟังก์ชั่นเดียวกับ Set<T>
ดังนั้นเมื่อคุณใช้ทั่วไปฟังก์ชั่นไม่จำเป็นต้องส่งคืนผลลัพธ์หรือวัตถุไม่ต้องการค่า สิ่งนี้สามารถแสดงได้ด้วยประเภท java.lang.void
สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดเกี่ยวกับการวิเคราะห์คลาสและการใช้ Java.lang.Void แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!