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

بعض ما استجد في النسخة السابعة من الجافا

بدأه herch في 30 نوفمبر 2009 · 16 رد · 1,072 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كتتمة للموضوع السابق تغيير نسبة شفافية النوافذ في النسخة السابعة من الجافا، هذه إضافة جديدة في النسخة السابعة.

Strings in switch

في النسخة الحالية، يمكن فقط استعمال char، byte، short و int في شرط الswitch. في النسخة السابعة يمكن استعمال String ايضا في switch

مثال

public class NewClass{

	public static void main(String[] args) {
		String whoIsThis = "zozo";
		switch(whoIsThis) {
			case "zozo":
				System.out.println("Hi zozo, let's go to the café");
				break;
			case "zeze":
				System.out.println("Go home zeze, it's late");
				break;
			case "zizi":
				System.out.println("Hello zizi, you're shining today");
				break;
			default:
				System.out.println("Who are you?");
				break;
		}
	}
}

ويمكن تحميل jdk7 early access من هذا الرابط http://download.java.net/jdk7/binaries

2
#2

مشكور أخى على حرصك على تقديم كل ماهو جديد

وفعلا هذه المعلومة مهمة جدا

جزاك الله خيرا

تقبل مرورى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

اذكر ان هذه النقطة استوقفتني كثيراً عندما انتقلت من الـ C++ الى الجافا ... حيث انه في السي بلس من الممكن ان نقوم بذلك لكن

في الاصدرات القديمة من الجافا لم يكن ذلك ممكن على إعتبار ان الـ String ليس Primitive Type

لكن هل من الممكن تعميم هذا الشيء على جميع الـ Objects او الـ Reference Types؟؟

مجرد تساؤل بصوت عالي فقط :)

بالتوفيق ..

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#4

تمام و الله ... فعلا مطوري شركة صن في تحديث مستمر للغتهم الجافا.

بارك الله فيك يا herch

#5
بنت اليمن كتب:

لكن هل من الممكن تعميم هذا الشيء على جميع الـ Objects او الـ Reference Types؟؟

مجرد تساؤل بصوت عالي فقط :)

بالتوفيق ..

لا، String فقط

MKSoft كتب:

تمام و الله ... فعلا مطوري شركة صن في تحديث مستمر للغتهم الجافا.

بارك الله فيك يا herch

قي الواقع هناك عدة مطورين ليسوا من sun ويعملون على الjdk7، لأن sun جعلت الجافا مفتوح المصدر

#6

تماااااااااااااااااااااام جداااااااااااا

خطوة جميلة جدا لا شك ،، وكنت بحتاجها كتير فعلا فعلا :D

شكراً جزيلاً

صــفــر

#7

مشكور اخ herch

على هذه السلسلة من المعلومات ...

قرأت في بعض المواقع بانه تم اضافة طريقة جديده لانشاء List,Map اتمنى ان تتطرق لها اذا سمح لك وقتك

وشكرا ....

تم تعديل هذه المشاركة بواسطة العيافـي في 1 ديسمبر 2009 في 10:55

#8
العيافـي كتب:

مشكور اخ herch

على هذه السلسلة من المعلومات ...

قرأت في بعض المواقع بانه تم اضافة طريقة جديده لانشاء List,Map اتمنى ان تتطرق لها اذا سمح لك وقتك

وشكرا ....

كلامك صحيح. سأحاول كتابة موضوع يتطرق لذلك

وشكرا للجميع على ردودهم الجميلة

#9

أخت بنت اليمن أن switch-case تتعامل بطريقة خاصة في المترجم compiler

بحيث يتم تخزين مكان الشيفرة لكل حالة case من الحالات على التوالي في الذاكرة

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

وأظن أنه في الوضع العادي يتم ربط كل حالة فعلية بحالة غير فعلية

مثال على كلامي

الحالة 0 تحول إلى الحالة 0

الحالة 100 تحول إلى الحالة 1

وهكذا

وأظن أنه ليتم التأكد من String تساوي String آخر يتم استخدام الدالة equalTo

لهذا أعتقد أنه بالإمكان القيام بنفس الشيء بالنسبة لأي Object آخر

هذا الكلام من جهة نظرية بحتة

ولا أعرف أي شيء عن jdk 7

بالمناسبة ربما يكون كلامي خطأ تماماً لكني أحاول التفكير بمنطقية

لو كان لدى أحدكم أي معلومات عن الموضوع أتمنى لو يشاركنا بها

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#10

كما قلت اخي علاء ... الموضوع يحتاج الىتجربه ...

اذا كانت الفكرة هي في استخدام الدالة equalTo فسيصبح الموضوع(نظرياً) سارياً مع بقية الكائنات على اعتبار ان جميع الكائنات ترثت الكلاس Object الحاوي لهذه الدالة ...

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#11

ما تقولونه منطقي، لكن هذا لا يغير من الواقع، وهو أن String هي المسموح بها فقط من طرف الcompiler. ربما لديهم أسبابهم لعدم التعميم على كل الفئات.

#12

لا يا عصام

على الأغلب هناك ما يبرر هذا السلوك من ناحية المطورين

وهذا ما نحاول فهمه

لكني بعد أن عصرت نفسي في التفكير لم أجد شيء ممكن أن يؤدي إلى هذه النتيجة

على كل وفوق كل ذي علم عليم

ربما لو أمكنك يا عصام أن تأتي لنا بالتعليمات vm الموجودة في ملف class

ربما أمكننا أن نفهم أي شيء

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13

Switches based on integers can be optimized to very efficent code. Switches based on other data type can only be compiled to a series of if() statements.

For that reason C & C++ only allow switches on integer types, since it was pointless with other types.

The designers of C# decided that the style was important, even if there was no advantage.

The designers of Java apparently thought like the designers of C

تم تعديل هذه المشاركة بواسطة Mohammed Mshari Ersan في 2 ديسمبر 2009 في 17:09

#14

أظن أن المقارنة لا تتم باستعمال equals()، ولا أستبعد أن تكون switch لازالت تقارن فقط الأعداد، لكن تم فقط إضافة String للفئات المقبولة من طرف الcompiler داخل switch. ممكن تكون المقارنة تتم بمقارنة نتيجة hashCode() الخاصة بكل String، لكن لست متأكدا لانه لا يوجد مقالات تتكلم بشكل واضح عن هذا الموضوع

#16

هل هناك احتمال أن يكون الموضوع مجرد if else

لا أكثر ولا أقل

كما حصل من قبل في foreach

أقصد أنه في حالة وجود switch case تعتمد على string فإنها تحول فعلياً إلى هيكلية if elseif else

تحياتي

1
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#17

مقالة هنا تستحق الترجمة بخصوص نفس الموضوع :

Anatomy of adding strings in switch to javac

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…