انتخاب بین Nested Class، Local Class، Anonymous Class و Lambda Expression
همانطور که در بخش کلاسهای Nested اشاره شد، Nested Classها گروهبندی منطقی کلاسها، افزایش Encapsulation و ایجاد کد خواناتر و قابل نگهداریتر را ممکن میکنند. Local Classها، Anonymous Classها و Lambda Expressionها نیز این مزایا را دارند، اما هرکدام برای شراط خاصتری در نظر گرفته شدهاند:
- Local Class: زمانی استفاده کنید که به بیش از یک نمونه از کلاس نیاز دارید، به Constructor آن دسترسی میخواهید، یا نیاز به معرفی نوع جدید و نامگذاریشده دارید (مثلاً چون میخواهید بعداً Methodهای اضافی فراخوانی کنید).
- Anonymous Class: زمانی استفاده کنید که نیاز به تعریف فیلد یا Methodهای اضافی دارید.
- Lambda Expression:
- زمانی استفاده کنید که یک واحد رفتاری واحد (Single Unit of Behavior) را کپسوله کردهاید و میخواهید آن را به کد دیگری منتقل کنید. مثلاً برای اجرای عملیات روی هر عنصر Collection، یا هنگام تکمیل فرایند، یا هنگام بروز خطا.
- زمانی استفاده کنید که به یک نمونهٔ ساده از Functional Interface نیاز دارید و هیچیک از معیارهای بالا صادق نیست (مثلاً نه به Constructor نیاز دارید، نه نوع نامگذاریشده، نه فیلد، و نه Method اضافی).
- Nested Class: زمانی استفاده کنید که نیازهایتان مشابه Local Class است اما میخواهید نوع را در دسترستر کنید و به متغیرهای محلی یا پارامترهای Method نیاز ندارید.
- Inner Class (غیراستاتیک): اگر به دسترسی به فیلدها و Methodهای non-public کلاس احاطهکننده نیاز دارید. اگر به این دسترسی نیاز ندارید، از Static Nested Class استفاده کنید.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/