Samodejna pretvorba primitivnih tipov podatkov v enakovreden tip Wrapper je znana kot boksanje, nasprotna operacija pa je znana kot razpakiranje. To je nova funkcija Java5. Programerju java torej ni treba pisati kode za pretvorbo.
Prednost Autoboxing in Unboxing:
Ni potrebe po ročnem pretvorbi med primitivi in ovoji, zato je potrebno manj kodiranja. |
Preprost primer Autoboxinga v Javi:
class BoxingExample1{ public static void main(String args[]){ int a=50; Integer a2=new Integer(a);//Boxing Integer a3=5;//Boxing System.out.println(a2+' '+a3); } }
Preizkusite zdaj Output:50 5
prenesite ta primer
Preprost primer razpakiranja v Javi:
Samodejna pretvorba tipa ovojnega razreda v ustrezen primitivni tip je znana kot Unboxing. Poglejmo primer razpakiranja:
class UnboxingExample1{ public static void main(String args[]){ Integer i=new Integer(50); int a=i; System.out.println(a); } }
Preizkusite zdaj Izhod:
50
Autoboxing in Unboxing s primerjalnimi operaterji
Autoboxing je mogoče izvesti s primerjalnimi operatorji. Oglejmo si primer boksanja s primerjalnim operatorjem: |
class UnboxingExample2{ public static void main(String args[]){ Integer i=new Integer(50); if(i<100){ unboxing internally system.out.println(i); } < pre> <span> Test it Now </span> <pre> Output:50 </pre> <hr> <h3>Autoboxing and Unboxing with method overloading</h3> <table class="table"> <tr><td>In method overloading, boxing and unboxing can be performed. There are some rules for method overloading with boxing: <ul> <tr><td>Widening beats boxing</td> </tr><tr><td>Widening beats varargs</td> </tr><tr><td>Boxing beats varargs</td> </tr></ul> </td></tr> </table> <h3>1) Example of Autoboxing where widening beats boxing</h3> <table class="table"> <tr><td>If there is possibility of widening and boxing, widening beats boxing.</td></tr> </table> <pre> class Boxing1{ static void m(int i){System.out.println('int');} static void m(Integer i){System.out.println('Integer');} public static void main(String args[]){ short s=30; m(s); } } </pre> <span> Test it Now </span> <pre> Output:int </pre> <hr> <h3>2) Example of Autoboxing where widening beats varargs</h3> <table class="table"> <tr><td>If there is possibility of widening and varargs, widening beats var-args.</td></tr> </table> <pre> class Boxing2{ static void m(int i, int i2){System.out.println('int int');} static void m(Integer... i){System.out.println('Integer...');} public static void main(String args[]){ short s1=30,s2=40; m(s1,s2); } } </pre> <span> Test it Now </span> <pre> Output:int int </pre> <hr> <h3>3) Example of Autoboxing where boxing beats varargs</h3> <table class="table"> <tr><td>Let's see the program where boxing beats variable argument:</td></tr> </table> <pre> class Boxing3{ static void m(Integer i){System.out.println('Integer');} static void m(Integer... i){System.out.println('Integer...');} public static void main(String args[]){ int a=30; m(a); } } </pre> <span> Test it Now </span> <pre> Output:Integer </pre> <hr> <h3>Method overloading with Widening and Boxing</h3> <table class="table"> <tr><td>Widening and Boxing can't be performed as given below:</td></tr> </table> <pre> class Boxing4{ static void m(Long l){System.out.println('Long');} public static void main(String args[]){ int a=30; m(a); } } </pre> <span> Test it Now </span> <pre> Output:Compile Time Error </pre></100){>
Autoboxing in Unboxing s preobremenitvijo metode
Pri preobremenitvi metode je mogoče izvesti pakiranje in razpakiranje. Obstaja nekaj pravil za preobremenitev metode z boksom: |
1) Primer Autoboxinga, kjer širitev premaga boksanje
Če obstaja možnost razširitve in boksa, razširitev premaga boks. |
class Boxing1{ static void m(int i){System.out.println('int');} static void m(Integer i){System.out.println('Integer');} public static void main(String args[]){ short s=30; m(s); } }
Preizkusite zdaj Output:int
2) Primer Autoboxinga, kjer razširitev premaga vararge
Če obstaja možnost razširitve in varargov, razširitev premaga var-args. |
class Boxing2{ static void m(int i, int i2){System.out.println('int int');} static void m(Integer... i){System.out.println('Integer...');} public static void main(String args[]){ short s1=30,s2=40; m(s1,s2); } }
Preizkusite zdaj Output:int int
3) Primer Autoboxinga, kjer boks premaga vararge
Poglejmo program, kjer boks premaga spremenljiv argument: |
class Boxing3{ static void m(Integer i){System.out.println('Integer');} static void m(Integer... i){System.out.println('Integer...');} public static void main(String args[]){ int a=30; m(a); } }
Preizkusite zdaj Output:Integer
Preobremenitev metode z razširitvijo in boksanjem
Razširitve in boksanja ni mogoče izvesti, kot je navedeno spodaj: |
class Boxing4{ static void m(Long l){System.out.println('Long');} public static void main(String args[]){ int a=30; m(a); } }
Preizkusite zdaj Output:Compile Time Error
100){>