
int. המתכנת לא יודע מה משמעות 1 או 2, ואפשר לשלוח גם 4, שאין לו צבע. האינטליסנס מראה רק שמצפים ל-int, בלי לומר אילו ערכים נכונים.red, Red או RED, וההשוואה בתוך הפונקציה תתנהג אחרת לכל אחד מהם. אפשר גם לשלוח Yellow, שאינו נתמך, וכדי לדעת את הרשימה המלאה צריך לקרוא את גוף הפונקציה.Color, והקריאה נכתבת כ-Color.RED. כך אי אפשר לשלוח ערך שלא הוגדר, והקריאה עצמה מסבירה מה נשלח.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר כללי על ENUM בג'אווה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לחומר חדש שנקרא Inam. Inam זה בעצם טיפוס נתונים שמכיל בתוכו רשימה של קבועים. דבר ראשון, בואו נראה איזשהו צורך מסוים ולמה בעצם Inam יכול לפתור לנו איזושהי סיטואציה שקיימת לנו בפיתוח תוכנה.
בואו נניח שיש לנו פה איזושהי פונקציה, נגדיר static void display color message. אנחנו רוצים פונקציה שתקבל לסוגריים צבע ותציג הודעה כתלות בצבע. כל צבע תציג הודעה אחרת, יש לו איזושהי רשימה סגורה של צבעים שהיא יכולה לטפל בהם, ועבור כל צבע כזה היא מציגה הודעה אחרת.
השאלה הנשאלת היא מה בעצם אני צריך לשלוח לסוגריים? אז בוא נניח שאין לנו את הכלי הזה שנקרא enum, מה בעצם אפשר לשלוח לסוגריים?
אז אתם יכולים להגיד, טוב, בוא תשלח לסוגריים מספר שמייצג את הצבע. אוקיי, בוא נניח שיש לנו מספר, ניקח int color. בתוך הפונקציה כמובן הכלי הנכון להשתמש בו זה switch על ה-color, ובואו נניח שאנחנו אומרים case 1, אם נניח שולחים לנו 1, מבחינתי 1 זה צבע אדום, נניח ניקח red,
green, blue, ואז נרשום כאן red is the color of wine. יש לנו פה break, בואו נשכפל את זה לעוד שני צבעים, יש לנו פה גרין ובלו.
גרין is the color of grass דשא ובלו is the color of sky. אורייט. אז הנה יש לנו עכשיו את שלושת הצבעים שאנחנו מבחינתנו תומכים בהם.
עכשיו יש כמה בעיות עם הפונקציה הזאת. בואו נקרא לה display color message, נשלח 1, נראה שבעצם מוצג לנו ההודעה המתאימה, נקרא לה שוב עם 2 ו-3 ונראה שזה עובד בסדר כפי שכתבנו.
אז מה הבעיה עם הטכניקה הזאת? דבר ראשון, אנחנו יכולים גם לשלוח 4 ואין לנו צבע עבור 4. דבר שני, אם מתכנת מסתכל על הפונקציה הזאת, הוא בעצם אומר לעצמו, רגע, מה זה 1, מה זה 2, איזה צבעים אלה?
כאשר אני לא מסתכל על הפונקציה כי לא תמיד רואים את הפונקציה, לפעמים אני רוצה לקרוא לה ואני מסתכל על הקוד הזה ואני לא ממש יודע מה זה הצבע שלוש.
דבר נוסף, כאשר אנחנו נכנסים לאינטליסנס אנחנו רואים שהפונקציה מצפה לקבל אינט, אוקיי, אנחנו רואים לפי זה שזה קולור אבל מה בדיוק זה מצפה לקבל, איזה מספרים מותר לשלוח ואיזה אסור לשלוח, אני לא ממש יודע.
אנחנו צריכים לצורך כך להיכנס לתוך הפונקציה ולהתחיל לקרוא את הקוד שלה, וזה בזבוז זמן וזה מיותר כאשר אנחנו רק רוצים לקרוא לפונקציה.
זאת הייתה הטכניקה הראשונה וכמו שאנחנו רואים היא לא ממש טובה. בואו נקרא לפונקציה הזאתי displayColor1 ונבנה פונקציה נוספת, אבל הפעם נשתמש בטכניקה אחרת,