الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معادلة Enum في الجافا

بدأه الليل الصافي في 3 مايو 2008 · 2 رد · 1,022 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

وبعد

شباب الله يوفقكم ويوفقك من يشرح لي هذه المعادلة

enum Days { friday=1
,saturday}
ثم أعطيه  
int i = saturday;		// Legal; i = 2
وهل يمكن كتابة
int i = 2;		// Legal; i = saturday

هذه في C++

ابي اسويها في الجافا

وشكراً

#2

وعليكم السلام ورحمه الله وبركاته ،

بالنسبه الى enum فهي تختلف من جافا عن سي++ بشكل كبير ، ففي سي++ enum عباره عن تعريف مجموعه من الثوابت constant ، ويتم تغيير كل ثابت بالقيمه وقت الترجمه .

أما في جافا ونخص بالحديث ما بعد الأصدار 1.5 حيث الاصدارت السابقه لا تدعم هذا الكلاس ! ، نعم هو كلاس ويرث الكلاس الأب Enum ، وبه دالتين هما :

static Enum valueOf(Class enumClass, String name)
String toString()

الداله الأولى تقوم بارجاع قيمه الثابت .

الداله الثانيه ، تقوم بارجاع اسم الثابت .

نأخذ مثال بسيط :

public class EnumTest
{
	public enum Size { SMALL , MEDIUM , LARGE };

	public static void main (String args[])
	{
		Size s = Size.SMALL;
		System.out.println(s);
	}
}

لاحظ المخرج هو SMALL لأننا قمنا بطباعه الكائن s والذي استدعى الداله toString وكما ذكرنا أنها ستقوم بطباعه اسم الثابت .

بما أن enum هي كلاس ، اذا تستطيع اضافه ما تريد من متغيرات ودوال وداله بناء أن أردت ...

أنظر لهذا المثال :

public class EnumTest
{
	public static void main (String args[])
	{
		Size size =  Enum.valueOf(Size.class, "SMALL" );
		System.out.println("Size = "  + size );
		System.out.println("Content = " + size.getContent());
	}
}

enum Size
{
	SMALL("S") , MEDUIM("M") , LARGE("L");
	private String str;


	private Size (String s)
	{
		str = s;
	}

	public String getContent ()
	{
		return str;
	}
}

وهنا تعديل بسيط لكي يلائم ما تريد :

public class EnumTest
{
	public static void main (String args[])
	{
		Days day =  Enum.valueOf(Days.class, "SATURDAY" );
		System.out.println("day = "  + day );
		System.out.println("Content = " + day.getContent());
	}
}

enum Days
{
	SATURDAY(1) , MONDEY(2) , FRIDAY(3);
	private int num;


	private Days (int n)
	{
		num = n;
	}

	public int getContent ()
	{
		return num;
	}
}

بالطبع هذه العباره لا يمكن أن تكون صحيحه :

int i = 2;		// Legal; i = saturday

لأننا هنا سنسند 2 الى متغير صحيح ، أي لن يعرف بوجود يوم أو غيره !

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

جزاك الله خير

والله يكتبك عظيم الأجر والمثوبة

وشكراً

مواضيع مشابهة