کلاسهای Wrapper چه هستند؟
در زبان جاوا، کلاسهای Wrapper برای تبدیل نوعهای دادهای اولیه (primitive) به اشیاء (object) استفاده میشوند. هر نوع دادهای اولیه دارای یک کلاس Wrapper متناظر در پکیج java.lang است.
۱. API مجموعهها (Collections API)
ساختارهای دادهای در جاوا مانند ArrayList و HashMap تنها با اشیاء کار میکنند، نه با نوعهای اولیه. کلاسهای Wrapper این امکان را فراهم میکنند که نوعهای اولیه در مجموعهها استفاده شوند.
۲. دستکاری اشیاء
در برخی موارد (مانند پارامترهای متدها)، فقط اشیاء پذیرفته میشوند. کلاسهای Wrapper اجازه میدهند که نوعهای اولیه به عنوان اشیاء رفتار کنند.
۳. متدهای کاربردی
کلاسهای Wrapper متدهای مفیدی برای تجزیه (parsing)، مقایسه و تبدیل بین انواع دادهای ارائه میدهند.
نوعهای اولیه و کلاسهای Wrapper متناظر آنها
کلاس Wrapper↔️ نوع اولیه (Primitive)
byte↔️ Byte
short↔️ Short
int↔️ Integer
long↔️ Long
float↔️ Float
double↔️ Double
char↔️ Character
boolean↔️ Boolean
Boxing و Unboxing دستی (پیش از جاوا
۵)
Boxing دستی: تبدیل نوع اولیه به Wrapper بهصورت صریح
int a = 10;
Integer obj = new Integer(a); // Boxing دستی (منسوخ ولی معتبر)
Unboxing دستی: تبدیل Wrapper به نوع اولیه بهصورت صریح
Integer obj = new Integer(20);
int b = obj.intValue(); // Unboxing دستی
Autoboxing و Unboxing (از جاوا ۵ به بعد)
جاوا از نسخه ۵ به بعد تبدیل خودکار بین نوعهای اولیه و کلاسهای Wrapper را فراهم میکند.
Autoboxing: تبدیل خودکار نوع اولیه به شیء Wrapper
int x = 30;
Integer obj = x; // Autoboxing
Unboxing: تبدیل خودکار شیء Wrapper به نوع اولیه
Integer obj = 40;
int y = obj; // Unboxing
مثال: استفاده از کلاسهای Wrapper
public class WrapperExample {
public static void main(String[] args) {
int a = 5;
// Autoboxing
Integer obj = a;
// Unboxing
int b = obj;
System.out.println("Primitive: " + a);
System.out.println("Object: " + obj);
System.out.println("Unboxed: " + b);
}
}
متدهای رایج در کلاسهای Wrapper
parseXXX(String s)
تبدیل رشته به نوع اولیه
int num = Integer.parseInt("123");
double d = Double.parseDouble("45.6");
valueOf(String s)
تبدیل رشته به شیء Wrapper
Integer x = Integer.valueOf("100");
Boolean y = Boolean.valueOf("true");
xxxValue()
تبدیل یک شیء Wrapper به نوع دادهای دیگر
Integer i = 10;
double d = i.doubleValue(); // خروجی: 10.0
⚡️ @javapro_ir✈️ @group_javapro