Ce este autoboxing în Java și care sunt regulile avtoupakovki tipuri primitive wrapper clase?
Avtoupakovka o inițializare implicită mecanism obiect clase-ambalaje (Byte, scurt, Caracter, Integer, Long, Float, Double) valori corespunzătoare tipuri primitive originale (resp. Byte, scurt, char, int, lung, float, dublu), fără acordul expres utilizați constructorul.
Avtoupakovka are loc prin atribuire directă primitive - o clasa înveliș (folosind „=“) sau în transmiterea primitiv în parametrii metodei (tip „clasa împachetarea“). Avtoupakovke în „wrappers“ poate fi supusă ca un tipuri variabile primitive și compilare constante (literals și finale-primitivelor). Astfel, literali trebuie să fie corect sintactic pentru inițializarea sursă variabilă de tip primitiv.
Avtoupakovka variabile de tipuri primitive necesită o potrivire exactă a tipului primitiv original, - tipul de „clasa împachetarea“.
De exemplu, o încercare de tip octet avtoupakovat variabilă în scurt, fără conversie explicită byte-> compilare scurt nu va cauza o eroare.
Avtoupakovka constante ale tipurilor primitive permit limite mai mari de conformare. În acest caz, compilatorul este capabil să-și exercite primitivele pre implicite de expansiune / de tip contracție. Conversia are loc în două etape:
1) extinderea implicită (contracție) a tipului original de primitiv pentru ambalaje corespunzătoare de tip primitiv (pentru conversia int> Byte, primul compilator implicit int îngustează în byte)
2) în avtoupakovku primitivă "clasa wrapper" adecvat (compilator avtoupakovyvaet byte-> byte). Cu toate acestea, există două restricții suplimentare în acest caz:
a) atribuirea primitiv - „wrap“ poate fi făcută numai de către operatorul „=“ (nu puteți trece o astfel de entitate în parametrii de metodă fără o distribuție explicită).
b) tipul operandului stâng nu trebuie să fie mai vechi de caractere, nu tipul corect dozhen mai vechi de int, (expansiune admisă / contracția de octet <-> scurt, octet <-> char, scurt <-> mangal
și numai octetul de restricție <- int, short <- int, char <- int, все остальные варианты требуют явного приведения типов)
Dacă vă place întrebarea, votează pentru el
fil7 answer42 Blade_Master singurătate 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