null
في Java، تُستخدم القيمة الحرفية null للدلالة على غياب القيمة.
أنواع البيانات الأولية في Java لها جميعًا قيمة افتراضية، ولذلك لا يمكن أن تكون null أبدًا. وبحسب الاصطلاح، تبدأ بحرف صغير، مثل int.
أنواع المراجع تحمل عنوان ذاكرة الكائن، ويمكن أن تكون قيمتها null. وهي تبدأ عمومًا بحرف كبير، مثل String.
محاولة إسناد القيمة null إلى متغير أولي ستؤدي إلى خطأ في وقت الترجمة، لأن المتغير يحمل دائمًا قيمة أولية من النوع المُسنَد إليه.
//Throws compile time error stating the required type is int, but null was provided
int number = null;
إسناد القيمة null إلى متغير مرجعي لن يؤدي إلى خطأ في وقت الترجمة، لأن المتغيرات المرجعية يمكن أن تكون null.
//No error will occur as the String variable str is nullable
String str = null;
في هذا التمرين ستكتب الكود لطباعة شارات الأسماء لعاملي المصنع.
لدى الموظفين معرّف واسم واسم قسم. تُنسّق نصوص شارات الموظفين على النحو التالي: "[id] - name - DEPARTMENT".
نفّذ طريقة Badge.print() لتُرجع نص شارة الموظف:
Badge badge = new Badge();
badge.print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"
لاحظ أن القسم يجب أن يكون بأحرف كبيرة في نص الشارة.
بسبب خلل في نظام الحاسوب، في بعض الأحيان لا يكون لدى الموظفين الجدد معرّف بعد عند بدء العمل في المصنع.
ولأن الشارات مطلوبة، سيحصلون على شارة مؤقتة بدون بادئة المعرّف. عدّل طريقة Badge.print() لدعم الموظفين الجدد الذين ليس لديهم معرّف بعد:
Badge badge = new Badge();
Badge.print(null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"
حتى مالك المصنع يجب أن يرتدي شارة في جميع الأوقات.
ومع ذلك، ليس للمالك قسم. في هذه الحالة، يجب أن يطبع نص الشارة "OWNER" بدلًا من اسم القسم.
عدّل طريقة Badge.print() لطباعة نص شارة للمالك:
Badge badge = new Badge();
badge.print(254, "Charlotte Hale", null);
// => "[254] - Charlotte Hale - OWNER"
لاحظ أنه من الممكن أن يكون المالك أيضًا موظفًا جديدًا:
Badge badge = new Badge();
badge.print(null, "Charlotte Hale", null);
// => "Charlotte Hale - OWNER"
سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.