JAVAPRO_IR Telegram 4575
🎓موضوع: 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
👍5



tgoop.com/javapro_ir/4575
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

The optimal dimension of the avatar on Telegram is 512px by 512px, and it’s recommended to use PNG format to deliver an unpixelated avatar. A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first. bank east asia october 20 kowloon Ng Man-ho, a 27-year-old computer technician, was convicted last month of seven counts of incitement charges after he made use of the 100,000-member Chinese-language channel that he runs and manages to post "seditious messages," which had been shut down since August 2020. Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link).
from us


Telegram برنامه نویسی جاوا | Java
FROM American