دالة الـ ()value والـ ()valueOf

جميع الكلاسات من نوع enum تحتوي على دالتين معرفة مسبقاً هي:

()value  و   ()valueOf

 

الدالة ()value تقوم بإرجاع مصفوفة تحتوي على كافة ثوابت الـ enum

في حالتنا هذه فإنها سترجع مصفوفة تحتوي (ORANGE,APPLE,LEMON,BANANA)

 

الدالة ()valueOf تقوم بإرجاع قيمة الثابت الذي تم تمريره لبراميتر الدالة كـ نص

بمعنى لو قمنا بتمرير ORANGE ستقوم الدالة بالتأكد من وجوده من ضمن ثوابت الـ enum، إذا كان موجود ستعيد قيمة الثابت "ORANGE" بما يحمله من متغيرات ودوال.

 

لنرى كيفية عمل الدالتين:

ننظر للبرنامج التالي في حالة إستخدام الدالة ()values :

أولاً نقوم بتعريف مصفوفة من Fruits نسميها allFruits لتقوم بإستقبال قيمة الثوابت التي بداخل Fruits كمصفوفة

	public static void main(String[] args) {
		
		Fruits [] allFruits = Fruits.values();

	}

 

الآن أصبحت المصفوفة allFruits جاهزه وتحمل قيم الثوابت، نستطيع طباعة القيم الآن عن طريق استخدام for loop كالتالي:

 

	public static void main(String[] args) {
		
		Fruits [] allFruits = Fruits.values();
		// طباعة قيم المصفوفة
		for(Fruits x : allFruits) {
			System.out.println(x);
		}

	}

 

نتيجة البرنامج الـ output ستكون:

ORANGE
APPLE
LEMON
BANANA

 

وهي قيم الثوابت التي بداخل Fruits

يمكن أيضاً كتابة كود مختصر لإستخدام دالة ()values وطباعة عناصرها بالطريقة التالية:

public static void main(String[] args) {
		
		System.out.println(Arrays.toString(Fruits.values()));

	}

 

سينتج عن هذا الكود أيضاً قيمة ثوابت الـ Fruits لكن بالشكل التالي:

 

[ORANGE, APPLE, LEMON, BANANA]

 

 

الآن لنرى كيفية عمل الدالة ()valueOf

لنقم بتعريف متغير نوعه Fruits ولنسميه org

	public static void main(String[] args) {
		
		Fruits org;

	}

 

الآن لنرى كيف نسند له قيمة ORANGE من خلال الدالة ()valueOf

	public static void main(String[] args) {
		
		Fruits org;
		org = Fruits.valueOf("ORANGE");

	}

 

بهذه الطريقة نحن نخبر الدالة بالبحث عن ثابت بإسم ORANGE وإسناد قيمته للمتغير org

تذكر أن الجافا حساسة لحجم الحروف لذلك يجب أن يتطابق النص الذي تم تمريره للدالة مع إسم الثابت وإلا سينتج خطأ عن ذلك.

الآن بإمكاننا التعامل مع المتغير org بأي طريقة وإستدعاء دواله الخاصة بعد أن تم إسناد قيمة الـ ORANGE له.

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !