logo

Samodejno pakiranje in razpakiranje:

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(&apos;int&apos;);} static void m(Integer i){System.out.println(&apos;Integer&apos;);} 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(&apos;int int&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} 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&apos;s see the program where boxing beats variable argument:</td></tr> </table> <pre> class Boxing3{ static void m(Integer i){System.out.println(&apos;Integer&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} 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&apos;t be performed as given below:</td></tr> </table> <pre> class Boxing4{ static void m(Long l){System.out.println(&apos;Long&apos;);} 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:
Razširitev premaga boks
Razširitev premaga vararge
Boks premaga vararge

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(&apos;int&apos;);} static void m(Integer i){System.out.println(&apos;Integer&apos;);} 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(&apos;int int&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} 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(&apos;Integer&apos;);} static void m(Integer... i){System.out.println(&apos;Integer...&apos;);} 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(&apos;Long&apos;);} public static void main(String args[]){ int a=30; m(a); } } 
Preizkusite zdaj
 Output:Compile Time Error