Avtoupakovka primitívek java

Mi autoboxing Java és mik a szabályok avtoupakovki primitív típusokat wrapper osztályok?

Avtoupakovka mechanizmus implicit inicializálási objektum osztályok szűrők (Byte, Short, Character, Integer, Long, Float, Double) értékek megfelelő eredeti primitív típusok (ill. Byte, rövid, char, int, hosszú, úszó, dupla), anélkül, hogy az expressz használja a kivitelező.






Avtoupakovka történik közvetlen hozzárendelését primitív - a wrapper osztály (a „=”), vagy az átviteli a primitív a módszer paramétereinek (típus „class-wrapper”). Avtoupakovke a „wrappers” lehet alávetni, mint egy primitív változó típusok, és összeállítja-időállandó (literálok és záró-primitívek). Így literálok kell szintaktikailag helyes inicializáló változó forrás ősi típus.

Avtoupakovka változók primitív típusok igényel pontosan megegyezik az eredeti primitív típus - a fajta „class-wrapper”.
Például egy kísérlet avtoupakovat byte típusú változó Rövid nélkül explicit konverzió bájt-> rövid összeállítás, ami hibát okozhat.







Avtoupakovka állandók primitív típusok lehetővé teszik a nagyobb megfelelés határokat. Ebben az esetben a fordító képes gyakorolni pre implicit kinyúló / típus primitívek. Átalakítás zajlik két szakaszból áll:
1) implicit tágulási (összehúzódás) az eredeti típusú primitív primitív típusú megfelelő wrappers (átalakítására int-> Byte, első fordító implicit int szűkül byte)
2) a megfelelő avtoupakovku primitív "wrapper class" (compiler avtoupakovyvaet bájt-> Byte). Azonban van két további korlátozások ebben az esetben:
a) hozzárendelésével primitív - „wrap” lehet csak az üzemeltető „=” (nem tudja átadni egy ilyen szervezet a módszer paramétereinek nélkül explicit cast).
b) a típus a bal oldali operandusa nem lehet régebbi, mint karakter, nem a megfelelő típusú dozhen idősebb int, (megengedett tágulási / összehúzódási bájt <-> Röviden, bájt <-> char, rövid <-> faszén
és az egyetlen korlátozás byte <- int, short <- int, char <- int, все остальные варианты требуют явного приведения типов)

Ha tetszik a kérdés, szavaznak rá

fil7 answer42 Blade_Master magány panser Kirill_snk kir_jacob Ronny147 Arnost vvkvvk kira_shtorm Sunrise123 Vikky_Leto LincolnShow Letos Nata22 humb1t pikaboom dcba1257908 andrew_aa0mail Russa voyager42 san4osq dimaatkaev AARomanov1985 Zerus




Kapcsolódó cikkek