בהמשך לפעם הקודמת,
נראה כעת Feature שיש בJava שאין בC#.
הFeature נקרא Anonymous types.
גם בC# קיים Feature בשם Anonymous types, אבל הוא קצת שונה (ראו גם טיפ מספר 90)
בJava הFeature מאפשר לנו לממש ממשק בתוך מתודה.
איך עושים את זה? נניח שיש לנו את הממשק הבא של Java:
|
|
נוכל לממשו כך בתוך מתודה:
|
|
כפי שאנחנו רואים, בעצם מימשנו ממשק בתוך הפונקציה, ואנחנו מחזיקים Instance של הממשק, אותו אנחנו יכולים להעביר לאן שאנחנו רוצים.
כאן בדוגמה, אנחנו רואים שהעברנו אותו לThread של Java.
שימו לב שלמחלקה הפנימית הזאת יש גישה לכל המשתנים של הפונקציה ולכל הMemberים של המחלקה, שזה ממש מגניב J
מצד שני, זה קצת מוזר – אם כבר אנחנו כותבים מספר מתודות ארוכות למחלקה, למה שלא נכתוב מחלקה רגילה וזהו?
למרות שאפשר להנות מהClosures בצורה יחסית נוחה. (כמו בAnonymous Delegates בC#, ראו גם טיפ 44)
המשך יום אנונימי עם קפה שחור טוב.