دوره‌ها / JAVA / کلاس‌های بسته‌بندی (Java Wrapper Classes)

کلاس‌های بسته‌بندی (Java Wrapper Classes)

15 دقیقه Article

کلاس‌های بسته‌بندی (Wrapper Classes): پلِ ارتباطی 🌉🎁

در جاوا، انواعِ داده‌یِ اصلی (Primitive Types) مانند int و char اشیاء نیستند. این موضوع باعث می‌شود نتوانیم آن‌ها را در کالکشن‌ها (مثل ArrayList) قرار دهیم. کلاس‌های بسته‌بندی راهی برای تبدیلِ این انواع به اشیاء هستند.

۱. لیست کلاس‌های بسته‌بندی

<th>Primitive Type</th><th>Wrapper Class</th>
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

۲. Autoboxing و Unboxing ⚡

  • Autoboxing: تبدیلِ خودکارِ Primitive به شیء (مثلاً 5 به Integer).
  • Unboxing: تبدیلِ خودکارِ شیء به Primitive.
{code_block('Integer myInt = 5; // Autoboxing\nint plainInt = myInt; // Unboxing')}

۳. متدهای کاربردی Wrapper ها

یکی از بزرگترین مزایای این کلاس‌ها، متدهایِ کمکیِ آن‌هاست. مثلاً تبدیلِ رشته به عدد:

{code_block('String s = "123";\nint num = Integer.parseInt(s);\n\nSystem.out.println(Integer.toHexString(255)); // تبدیل به هگزادسیمال')}
تفاوت مهم: اشیاءِ Wrapper به دلیلِ داشتنِ متدها و متادیتا، حافظه‌یِ بسیار بیشتری نسبت به انواعِ Primitive مصرف می‌کنند.
نکته طراحی: همیشه وقتی از Collections استفاده می‌کنید، ناچار به استفاده از Wrapperها هستید، اما در محاسبات ریاضی سنگین، حتماً از انواع پایه استفاده کنید تا سرعتِ برنامه کم نشود.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی پیشرفته و امنیت سیستم 🛡️⚙️

در این بخش، به مفاهیمی می‌پردازیم که برای پایداری و امنیتِ برنامه‌های بزرگِ جاوا حیاتی هستند.

۱. استراتژی مدیریت استثناها (Fail-Fast vs Fail-Safe)

در طراحی سیستم‌های بزرگ، ما معمولاً از الگوی Fail-Fast استفاده می‌کنیم؛ یعنی به محض وقوع خطا، برنامه را با یک استثنای دقیق متوقف می‌کنیم تا از انتشار فساد داده‌ها جلوگیری کنیم. همچنین، نباید استثناها را با یک بلاکِ catch خالی "خفه" کنید. هر استثنا باید حتماً لاگ (Log) شود یا به لایه‌ی بالاتر گزارش داده شود.

۲. کالبدشکافی Autoboxing در حافظه

تبدیلِ اتوماتیکِ انواعِ Primitive به اشیاءِ Wrapper (مثل تبدیل int به Integer) در ظاهر ساده است، اما در حلقه‌هایِ سنگین می‌تواند باعثِ ایجادِ هزاران شیءِ اضافه در حافظه Heap و در نتیجه فشار به Garbage Collector شود. همیشه در بخش‌های حساس به پرفورمنس، از انواع Primitive استفاده کنید.

۳. پارادایم برنامه‌نویسی تابعی (Functional Programming)

استفاده از Lambda Expressions شروعِ حرکتِ جاوا به سمت برنامه‌نویسی تابعی بود. این سبک نه تنها باعثِ کوتاه‌تر شدنِ کدها می‌شود، بلکه امکانِ اجرایِ موازیِ کدها (Parallel processing) را روی پردازنده‌های چند هسته‌ای بسیار ساده‌تر می‌کند.

نکته پایانی: مهارت در مدیریتِ خطاها و استفاده از نخ‌ها (Threads)، مرزِ بین یک کدنِویسِ مبتدی و یک توسعه‌دهنده‌یِ ارشد است. همیشه کدی بنویسید که در مقابلِ بدترین ورودی‌ها هم مقاوم باشد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تبدیل رشته به عدد Easy
سوال تمرین

یک رشته به نام s با مقدار "456" دارید. با استفاده از کلاسِ بسته‌بندیِ مناسب، آن را به عددِ صحیح (int) تبدیل کرده و ضرب در 2 چاپ کنید.

پاسخ تمرین
JAVA
public class Main {
  public static void main(String[] args) {
    String s = "456";
    int num = Integer.parseInt(s);
    System.out.println(num * 2);
  }
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.