අද අපි කතා කරන්නෙ සරල topic එකක් ගැන.😌
ඒ තමයි Auto Boxing And Unboxing.📦
👀 ඊට කලින් අපි බලමු මොනවද මේ Java වල තියෙන Data types වර්ග 2 කියල.
1️⃣ Primitive Data Types
Primitive කියන්නෙ සරලම සහ directly, stack memory එකේ store කරන්න පුලුවන් data types.
🧠 Ex:- int, boolean, double, float, .
2️⃣ Non-primitive Data Types
Non-primitive කියන්නෙ objects. ඒ කියන්නෙ stack එකේ store කරන්නෙ reference එක විතරයි.
🔗 Ex:- String, Array, Class (Student, Customer), Interfaces, Collections, Wrapper, …
🤔 ඉහත මම සදහන් කරපු ගොඩක් non-primitive types ඔයාලය පුරුදුයි. ඒ අතරින් අන්තිමට තියෙන Wrapper class ගැන ඔයාල දන්නවද?
📦 Wrapper class කියන්නෙ primitive data type එකේම Object type එක.
සෑම primitive type එකකටම wrapper class එකක් තියෙනවා.
🧾 EX:
int → Integer
double → Double
boolean → Boolean
🧍♂️ අපට Integer value එකක් store කරගන්න ඕන අවස්ථාවක int හෝ Integer use කරන්න පුලුවන්.
(Primitive type එකක් වෙනුවට Wrapper class එකක් use කරන්න පුලුවන්)
🙋♂️ ඇයි එහෙනම් primitive type තියෙද්දි Wrapper classes කරලියට ආවෙ?
අපට සෑම වැඩක්ම primitive use කරල කරගන්න බැහැ:
1️⃣ Java collections use කරද්දි අපට primitive type use කරන්න බැහැ.
List
List
2️⃣ Primitives can’t be null, but wrapper classes can. DB සමඟ ගනුදෙනු කරනකොට null අවශ්ය වෙනවා.
Ex:-age එක විදියට primitive int use කලවිට default value එක 0.ඒක ප්රශ්නයක්.Wrapper class use කලවිට default null.
3️⃣ Wrapper classes වල utility methods තියෙනවා 🛠️
හිතන්න අපි double value එකක් user input එකක් විදියට ගත්තෙ String විදියට කියල.ඉතින් අපට පුලුවන් Wrapper classes වල තියෙන utility method use කරල ඒක covert කරගන්න.
Ex: Double.parseDouble(“23.5”)
4️⃣ Generics වැඩ කරන්නෙ wrapper classes සමඟ විතරයි (Generics ගැන ඉදිරියේදි කතා කරමු) 👀
✅ හරි දැන් ඔයාලට primitive සහ wrapper classes ගැන idea එකක් තියෙනවනෙ.
📌 දැන් බලමු Auto Boxing සහ Auto Unboxing ගැන.
int x = 10;
Integer y = x;
🤨 ඔයාලට මේ code එක දැක්කම ප්රශ්නයක් පේන්නෙ නැද්ද?
x කියන්නෙ primitive type එකක්. y කියන්නෙ Integer type reference variable එකක්.
➡️ එතකොට y ගෙ කොහොමද primitive value එකක් store කරන්නෙ? 🥲
☝️ ඒ තර්කය හරි!
JDK 1.5 වලට කලින් මේක error එකක්.
☑️ නමුත් JDK 1.5 එකෙන් ආපු නව feature එකක් තමයි Autoboxing and Unboxing
🔁 Autoboxing in Java
Autoboxing is the automatic conversion of a primitive type to its corresponding wrapper class object.
🔁 Unboxing in Java
Unboxing is the automatic conversion of a wrapper class object to its
corresponding primitive type.
📌 දැන් ඔයාලට පැහැදිලි ඇතිනෙ primitive ↔️ wrapper class ගැන worry වෙන්නෙ නැතුව ඒව use කරන්න පුලුවන් කියල.
❗හැබැයි Wrapper classes වල limitations තියෙනවා:
int x = 10;
double y = x; // ✅ valid
Integer p = 20;
Double q = p; // ❌ invalid
✋ මේක invalid. හේතුව තමයි Boxing/Unboxing support කරන එක අදාල type pair එකට විතරයි.
🥳 මම හිතනව ඔයාලට Boxing සහ Unboxing තේරෙන්න ඇති කියල.
📚 එහෙනම් අපි හෙටත් අලුත් topic එකකින් හමු වෙමු! 🚀
- Credits: Rashmitha Kaushalya