ملیکا مرادی
ملیکا مرادی
خواندن ۲ دقیقه·۷ ماه پیش

جنریک در جاوا - Generic in Java

در جاوا Genericها راهی هستند برای تعریف interface ،class و methodهایی که با یک بار پیاده سازی، می‌توانند برای انواع داده ها استفاده شوند.

با یک مثال ساده شروع کنیم:

public class GenericClass<T> { private T t; // T به عنوان &quotType&quot public void set(T t) { this.t= t; } public T get() { return t; } }

در این مثال ،GenericClassیک کلاس generic است که یک نوع پارامتری T را استفاده می‌کند. می‌توانید هنگام ایجاد یک نمونه ازGenericClass،نوع داده‌ای که می‌خواهید در آن استفاده کنید را مشخص کنید:

GenericClass<Integer> integerGenericClass = new GenericClass<Integer>(); integerGenericClass.set(10); // در اینجا عدد ذخیره کردیم GenericClass<String> stringGenericClass = new GenericClass<String>(); stringGenericClass.set(&quotHello World&quot); // در اینجا رشته ذخیره کردیم

استفاده از generic‌ها چند مزیت دارد:

1. یک Type Safety:

با استفاده از generic، می توانید از خطاهای data type در زمان اجرا (Runtime error) جلوگیری کنید. به عنوان مثال، اگر یک کلاس generic را به درستی تعریف کنید و نوع داده نادرستی به آن پاس دهید، قبل از اجرای برنامه خطا را دریافت خواهید کرد. این به شما کمک می کند که خطاهای نوع را در compile time تشخیص دهید. ولی در کلاس های عادی (non-generic) خطاهای نوع (type errors) در زمان اجرا مشخص میشوند.

2. قابلیت استفاده مجدد (Reusability):

گفتیم که با استفاده از generic، می توانید کدهایی را بنویسید که برای تعداد زیادی از data typeها قابل استفاده باشد پس، شما می توانید یک بلاک کد را بنویسید و آن را برای هر data typeی که می خواهید استفاده کنید.

3. حذف تبدیل نوع داده (Elimination of Casts):

نیاز به تبدیل نوع (casting) نیست، چرا که کامپایلر از نوع داده‌ها آگاه است. Generic‌ها می‌توانند برای کلاس‌ها، رابط‌ها، متدها و حتی کلاس‌های داخلی استفاده شوند. به علاوه، می‌توانند محدودیت‌هایی داشته باشند (مثل extends یا super) که مشخص می‌کنند کدام نوع داده‌ها می‌توانند به عنوان پارامتر پاس داده شوند.



فعلا


genericdata typegeneric classjavagenerics
من ملیکام :) برنامه نویس back-end java هستم. برای ارتباط بیشتر میتونید بهم ایمیل بدید :) melika.moradi.deh@gmail.com
شاید از این پست‌ها خوشتان بیاید