הגדרה של Inner Types ב-Java
שפת התכנות Java מאפשרת להגדיר בתוך scope של type מסויים types אחרים. ה-type הפנימי נחשב ל-member של ה-type החיצוני, והוא נקרא בשם Nested Type. מקרה פרטי של Nested Type מתרחש כאשר ה-Nested Type לא נחשב ל-static. במקרה כזה, ה-Nested Type ייקרא בשם Inner Type. כיוון שצמד המילים Inner Type מעט קשה להבנה, בספרות מתייחסים בדרך כלל למקרה השכיח שבו class מוגדר בתוך scope של class אחר בלבד, ומשתמשים בצמד המילים Inner Class. כל עוד מדובר בהגדרה של Nested Type מדובר בנושא מוכר משפות תכנות אחרות כגון ++C ו-#C. בכל הנוגע ל-Inner Class, מדובר בנושא ייחודי ל-Java ולשפות שמתבססות עליה, כגון Scala ו-Kotlin.
התמיכה של Java ב-Lambda Expressions
פונקציות שאנו מגדירים ב-Java לא נחשבות לאובייקטים (להבדיל משפות תכנות אחרות כגון Python ו-JavaScript). מסיבה זו, כאשר ברצוננו להעביר פונקציונליות מסויימת לפונקציה אחרת כדי שתתבצע במקום אחר בתכנית, אין ברירה אלא להגדיר את הפונקציה שאותה אנו רוצים לשלוח במחלקה, ליצור אובייקט מאותה מחלקה ולשלוח את ה-reference לאותו אובייקט בתור ארגומנט לפונקציה האחרת שקוראים להפעלתה. עד להופעת Java 8 אשר כוללת תמיכה ב-Lambda Expressions נהגנו להשתמש ב-Anonymous Inner Classes. עם ההופעה של Lambda Expressions הקוד נהייה ברור יותר. ה-Lambda Expressions שאנו כותבים מתורגם ל-Anonymous Inner Class. כדי להבין היטב את הנושא Lambda Expressions יש להבין תחילה באופן יסודי את הנושא Nested/inner Classes.
הבנה יסודית של הנושא Inner Classes
הנושא Inner Classes מכוסה באופן יסודי למדי בקורס Java Programming אשר מועבר כ-Premium Course באופן סינכרוני, בקורס תכנות בג'אווה באתר life michael academy ובקורס Inner Classes in Java אשר פותח על ידנו ב-Udemy. לאחר הסיום בהצלחה של קורס זה אנו ממליצים לחזק את ההבנה בכל הנוגע לשימוש ב-Inner Classes בשפת התכנות Java באמצעות הקורסים Lambda Expressions ו- Functional Interface שגם אותם פיתחנו ב-Udemy.