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

Wrapper class در جاوا

به طور کلی Wrapper classها مشکلاتی که ممکن است در تبدیل نوع داده های Primitive به وجود آید را برطرف می‌کنند و قابلیت‌های اضافه‌تری را به این نوع داده‌ها اضافه می‌کنند. حالا چه قابلیت‌هایی هستند؟

در جاوا دو نوع داده داریم:

  • Primitive Data Types (داده‌ی اولیه): 8 نوع داده اولیه داریم، انواع داده‌ی اولیه توسط زبان از پیش تعریف و به وسیله ی keywordهای رزرو شده نام گذاری شده‌اند.

byte, short, int, long, float, double, boolean, char

  • Reference/Object Data Types (داده‌ی مرجع یا آبجکت): به طور کلی، داده‌های مرجع در جاوا شامل کلاس‌ها، آرایه‌ها، رشته‌ها و همچنین اشیاء ساخته شده توسط کاربر می‌شوند. این نوع داده آدرس ارجاع به Object ها(اشاره‌گر به یک شیء که در حقیقت همان آدرس آن متغیر(شیء) در RAM است) را نگهداری می‌کنند.

هر نوع داده ابتدایی در جاوا متناظر با یک Wrapper class است. برای مثال:

1. Integer برای int

2. Long برای long

3. Float برای float

4. Double برای double

5. Boolean برای boolean

6. Byte برای byte

7. Short برای short

8. Character برای char

این کلاس ها همه از کلاس Object به ارث برده شده‌اند و علاوه بر متدهایی که از کلاس Object به آنها ارث برده شده‌است، متدهای خاصی را نیز برای عملیات روی داده های ابتدایی فراهم می‌کنند.

با استفاده از Wrapper class‌ها، می‌توان Primitive data typeها را به object تبدیل کرده و از ویژگی ها و متدهای این کلاس ها استفاده کرد.

به عنوان مثال، با استفاده از Integer Wrapper class، می توانید یک مقدار int را به صورت شیء Integer تبدیل کنید و از متدهایی مانند intValue()، toString()، compareTo() و غیره بهره برد.

همچنین، در برخی موارد، استفاده از Wrapper class ها ضروری است، مانند استفاده از کلاسهای جمع و تفریقی (مثل ArrayList) که تنها از Wrapper class ها پشتیبانی می‌کنند.

در کل، Wrapper class ها در جاوا به ما امکان می‌دهند تا داده های ابتدایی را به شیء تبدیل کرده و عملیات‌های پیچیده‌تر را روی آنها انجام دهیم.


تبدیل خودکار از نوع داده‌های اولیه (primitive) به آبجکت (از جنس کلاس Wrapper) را autoboxing و عکس این عملیات را unboxing می‌گویند.


فعلا


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