tgoop.com/javapro_ir/4575
Create:
Last Update:
Last Update:
🎓موضوع: Bounded Generics در جاوا — محدودسازی نوع پارامترها با `extends` و `super`
در ادامهی مبحث Generics، حالا به یکی از ویژگیهای مهم آن میرسیم:
✅ مبحث Bounded Type Parameters
این ویژگی به ما اجازه میدهد نوع پارامتر Generic را محدود کنیم تا فقط از نوع خاصی (یا زیرکلاس آن) استفاده شود.
🔹 Upper Bound (`extends`)
وقتی از extends استفاده میکنیم، یعنی نوع پارامتر باید از یک کلاس خاص ارثبری کند یا یک اینترفیس خاص را پیادهسازی کرده باشد.
مثلاً:
class Box<T extends Number> {
private T value;
public void set(T value) { this.value = value; }
public T get() { return value; }
}
✅ حالا فقط کلاسهایی مثل Integer, Double, Float و سایر زیرکلاسهای Number مجاز هستند:
Box<Integer> intBox = new Box<>();
Box<Double> doubleBox = new Box<>();
// Box<String> stringBox ❌ خطا: String زیرکلاس Number نیست
🔹 Lower Bound (`super`)
وقتی از super در Wildcard استفاده میکنیم، یعنی نوع پارامتر باید ابرکلاس (Superclass) نوع مشخصشده باشد.
این روش معمولاً هنگام نوشتن دادهها در Collection بهکار میرود.
مثلاً:
List<? super Integer> list = new ArrayList<Number>();
list.add(10); // مجاز ✅
list.add(20); // مجاز ✅
اما هنگام خواندن از لیست، نوع بازگشتی فقط به صورت Object شناخته میشود.
🔹 نکته کاربردی: PECS اصل معروف در Generics
PECS = Producer Extends, Consumer Super
* اگر فقط از مجموعه میخوانی (Producer) ➤ از extends استفاده کن
* اگر فقط در مجموعه مینویسی (Consumer) ➤ از super استفاده کن
✅ جمعبندی
درواقع Bounded Generics به ما کمک میکند:
1. از نوعهای نامعتبر جلوگیری کنیم 🧩
2. انعطافپذیری و ایمنی نوعها را افزایش دهیم 🔒
3. کد قابلخواندنتر و قابلاعتمادتر بنویسیم 💡
#کاربرـپیشرفته
🆔 @javapro_ir
🆔 @group_javapro
BY برنامه نویسی جاوا | Java
Share with your friend now:
tgoop.com/javapro_ir/4575
