اليوم ، عندما كنت أتحقق من رمز المصدر ، اكتشفت فئة java.lang.void. ما هي وظيفة هذا؟
تحقق من ذلك أولاً عبر رمز المصدر
حزمة java.lang ؛/** * فئة {code void} هي فئة من العناصر النائبة غير المعقولة لعقد مرجع * إلى كائن {code class} الذي يمثل الكلمة الرئيسية Java * void. * * Author Uncounted * since jdk1.1 * /publicclass void { /** * الكائن {code class} يمثل pseudo-type المقابل لـ * الكلمة الرئيسية {code void}. */ suppressWarnings ("Unchecked") الفئة النهائية الثابتة العامة <void> type = (class <Void>) class.getPrimitiveClass ("void") ؛ / * * لا يمكن إنشاء فئة الفراغ. */ private void () {}}تم العثور عليه من الكود المصدري أن هذه الفئة نهائية ، ولا يمكن موروثة ، والبناء خاص ، ولا يمكن أن يكون جديدًا.
إذن ما هي وظيفة هذه الفئة؟
فيما يلي رمز المصدر لفئة java.lang.integer أولاً
نعلم جميعًا أن فئة Wrapper من int is java.lang.integer
من هذا يمكننا أن نرى أن java.lang.integer هي فئة التفاف من int.
وبالمثل ، من خلال رمز المصدر التالي لـ java.lang.void ، يمكننا أن نرى أن java.lang.void هي فئة غلاف للكلمة الرئيسية الفراغ.
الفئة النهائية الثابتة العامة <Doid> type = (class <Void>) class.getPrimitiveClass ("void") ؛استخدام باطل
فئة الفراغ هي فئة نائبة غير قابلة للإنشاء. إذا أدت الطريقة إلى إرجاع نوع الفراغ ، فيمكن أن تقوم الطريقة بإرجاع نوع فارغ فقط.
الأمثلة على النحو التالي:
اختبار void العام () {return null ؛}استخدم السيناريو 1:
Future <Void> f = pool.submit (new callable () {Override public void call () rems stispion {...... return null ؛}}) ؛على سبيل المثال ، باستخدام الواجهة القابلة للاتصال ، يجب أن تُرجع الواجهة قيمة ، ولكن لا توجد بيانات يتم إرجاعها بعد التنفيذ الفعلي. في هذا الوقت ، يمكنك استخدام نوع الفراغ كنوع الإرجاع.
استخدم السيناريو 2:
تعكس جميع الطرق مع قيمة الإرجاع باطلة.
اختبار الفئة العامة {public void hello () {} public static void main (String args []) {for (method method: test.classmethods ()) {if (method.getReturnType (). equals (void.type)) }}}}نتائج التنفيذ:
mainhellowaiwaitwaitnotifyNotifyall
ملاحظة: ما يلي يقدم المقارنة واستخدام java.lang.void و void
تعني الكلمة الرئيسية الفراغ أن الوظيفة لا تُرجع النتيجة وهي كلمة رئيسية في Java.
java.lang.void هو نوع. على سبيل المثال ، قم بتعيين قيمة فارغة إلى مرجع باطل.
void nil = null ؛
من خلال رمز فئة الفراغ ، يمكننا أن نرى أن نوع الفراغ لا يمكن أن يتم توريثه أو إنشاء مثيل له.
VOID Finalclass public void { /** * كائن {code class} الذي يمثل النوع pseudo-type المقابل لـ * الكلمة الرئيسية {code void}. */ suppressWarnings ("Unchecked") الفئة النهائية الثابتة العامة <void> type = (class <Void>) class.getPrimitiveClass ("void") ؛ / * * لا يمكن إنشاء فئة الفراغ. */ private void () {}}يشير الفراغ كنتيجة إرجاع للدالة إلى أن الوظيفة تُرجع فارغة (باستثناء لا يمكن لإرجاع أنواع أخرى).
وظيفة void (int a ، int b) {// افعل شيئًا عائدًا فارغًا ؛ }قبل ظهور الأدوية ، تم استخدام void بشكل عام في التفكير. على سبيل المثال ، يطبع الكود التالي اسم طريقة نوع الإرجاع الفراغ.
اختبار الفئة العامة {public void print (string v) {} public static void main (string args []) {for (method method: test.class.getMethods ()) {if (method.getreturntype (). equals (void.type)) }}}} بعد ظهور الأدوية الجنيسة ، سيتم استخدام نوع الفراغ في بعض السيناريوهات. على سبيل المثال ، يتم استخدام Future<T> لحفظ النتائج. ستعيد طريقة GET Future إلى النتيجة (النوع T).
ولكن ماذا لو كانت العملية لا تُرجع قيمة؟ في هذه الحالة ، يمكن تمثيله بـ Future<Void> . عندما يتم حساب النتيجة بعد الحصول على الاتصال ، ستعود خالية بعد العودة.
بالإضافة إلى ذلك ، يتم استخدام void أيضًا في الخرائط التي لا قيمة لها. على سبيل المثال ، Map<T,Void> ، لذلك سيكون لدى MAP نفس الوظيفة التي Set<T> .
لذلك ، عند استخدام الأداء العام ، لا تحتاج الوظيفة إلى إرجاع النتيجة أو لا يحتاج كائن إلى القيمة. يمكن أن يمثل هذا نوع java.lang.void.
لخص
ما سبق هو شرح مفصل لتحليل الفصل واستخدام java.lang.void المقدمة لك من قبل المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!