Avtoupakovka és kicsomagolás a java

Avtoupakovka és kicsomagolás a Java.

Ebben a cikkben fogjuk vizsgálni egy ilyen funkció a Java mint avtoupakovka / kicsomagolás.
Avtoupakovka és kicsomagolás függvénye konverziós primitív típusok a tárgy és fordítva.

Az egész folyamat automatikus Java Runtime Environment (JRE). De óvatosan kell bánni ezzel a funkcióval, mivel Ez befolyásolja a teljesítményét a program.

A verziók alacsonyabb JDK 1.5 nem volt könnyű átalakítani primitív adattípusok, mint például a
int, char, float, double az osztályokat Egész shell, Character, Float, Double. Kezdve JDK 5-ös verzió ezt a funkciót, átalakítása primitívek, hogy egyenértékű tárgyakat valósul automatikusan.
Ez a tulajdonság az úgynevezett Avtoupakovka (Autoboxing). A fordított folyamat, illetve - kicsomagolása (Unboxing) azaz A folyamat átalakításának tárgyak be a megfelelő primitív típusok.

Mintakódja avtoupakovki és dekompressziós az alábbiakban mutatjuk be:

Ha használt avtoupakovka és kicsomagolás?

Avtoupakovka Java fordító használjuk fel a következő feltételeket:

Amikor egy primitív típusú értéket vezetünk az eljárás, mint a beállítási mód, amely elvárja, hogy a tárgy megfelelő wrapper osztályt.
Amikor egy ősi típus rendelt érték a változó megfelelő wrapper osztályt.

Tekintsük a következő példát:

Az 1. lista: egy egyszerű kódot mutatja avtoupakovku

Előzetes változatai JDK 1.5 fenti kód okozna egy összeállítás hibát, mivel a fennmaradó üzemeltető% és egyváltozós plusz + = nem alkalmazható a wrapper osztályt.
De JDK 1.5 és újabb, a kód lefordul hiba nélkül alakítjuk Egész int.

Kicsomagolása Java fordító használjuk a következő feltételeknek:

Ha egy objektum telt el, mint a paraméter a módszer, amely elvárja a megfelelő ősi típus.
Ha az objektum rendelve a mindenkori ősi típus.

Tekintsük a következő példát:

2. listában: egy egyszerű kódot mutatja kicsomagolás


Avtoupakovka és unboxing lehetővé teszi a fejlesztő kódot írni, ami könnyen olvasható és érthető. Az alábbi táblázat mutatja a primitív adattípusok és a megfelelő shell tárgyakat.


1. táblázat: primitív típusok és az azzal egyenértékű wrapper osztályok

Tól összehasonlító operátorok
Avtoupakovka és a dekompressziós használható összehasonlító operátorok. A következő kódrészlet szemlélteti, hogyan működik ez:

A 3. lista: mintakódja mutatja avtoupakovku és kicsomagolás összehasonlító operátor

Avtoupakovka és kicsomagolás, ha a módszert túlterhelt

Avtoupakovka és a dekompressziós végezzük túlterhelése szerinti eljárás az alábbi szabályokat:
- bővítése „győzelem” csomagolás - olyan helyzetben, amikor nem válik közötti választás bővítése és a csomagolás kiterjesztése előnyös.

A 4. lista: kód például előnyeinek bemutatására túlterhelés

Az a program lezárása - int

- Expansion nyerési változó számú érvek - Olyan helyzetben, amikor ez lesz a választás között kiterjesztése és változó számú érv, kiterjesztése előnyös.

5. lista: mintakódja előnyeinek bemutatására túlterhelés

- Csomagolás nyer egy változó számos érv - Egy olyan helyzetben, ahol ez lesz a választás a csomagot, és változó számú érv, a csomagolás előnyös.

Lista 6: kód például előnyeinek bemutatására túlterhelés

Meg kell emlékezni a következő dolgok használata Avtoupakovku:
Mint tudjuk, minden jó tulajdonsága van hiba. Avtoupakovka sem kivétel ebben a tekintetben. Néhány fontos megjegyzés, hogy a fejlesztő kell vennie, amikor ezt a funkciót használja:
- Összehasonlítva tárgyak Operator „==” zavarhoz vezethet, mivel lehet alkalmazni, hogy a primitív típusok és tárgyakat. Ha ezt a szolgáltató olyan tárgyakra, valójában le a tárgy adatai helyett a tárgyak maguk.

7. lista: Példa kód mutatja az összehasonlítást.

- keverés tárgyak és primitív típusok közötti egyenlőség és a relációs operátorok. Ha összehasonlítjuk a primitív típusú objektum, akkor van kicsomagolás objektum, amely lehet dobni NullPointerException ha null objektumot.

- Object gyorsítótár. valueOf () metódus létrehoz egy konténer primitív tárgyakat, hogy cache. Mivel az értékek cache tartományban -128-tól 127-ig bezárólag, ezek cache tárgyak másként viselkednek.

- A romló teljesítményét. Avtoupakovka kicsomagolás lebontó alkalmazások teljesítményét, mert létrehoz egy nem kívánt tárgy, ami miatt a szemétgyűjtő gyakrabban dolgoznak.

Hátrányok Avtoupakovki.
Bár Avtoupakovka számos előnnyel jár, a következő hátrányai:

Listing 8: mintakódja mutatja a teljesítmény probléma.

Ez része a kódot, összege + = i fogják terjeszteni a sum = sum + i. Mivel a „+” operátora JVM kezdődik dekompressziós, hiszen a „+” operátora nem lehet alkalmazni a Integer objektum. És akkor az eredmény avtoupakovyvaetsya vissza.

Korábbi verzióit JDK 1.5 adattípusok int és egész más. Túlterhelés esetén a módszer, ez a két típus esetében probléma nélkül használható. Az Advent a automata csomagológép / kicsomagolás, akkor nehezebbé vált.
Egy példa erre túlterhelt remove () módszer ArrayList. ArrayList osztály két eltávolítási módszerek - eltávolítás (index), és távolítsa el (objektum). Ebben az esetben, az eljárás túlterhelés nem fordul elő, és egy megfelelő eljárás lesz az úgynevezett a megfelelő paramétereket.

Következtetés.

Avtoupakovka olyan mechanizmus átalakítására látens primitív adattípusok a megfelelő csomagoló osztályok (objektumok). A fordító használja valueOf () átalakítani primitív típusokat a tárgyak és módszerek intValue () módszer, a doubleValue (), stb hogy a primitív objektum típusok. Avtoupakovka alakítja logikai logikai a logikai, byte Byte, char karakterkorlátozásai, lebegnek egy Float, int az Integer, hosszú hosszú, rövid Short. Kicsomagolás fordul elő az ellenkező irányba.
Az eredeti cikk

Kapcsolódó cikkek