Autoboxing (imuabile) - 1

"Bună, Amigo!"

„Astăzi voi vorbi despre autoboxing . AutoBoxing înseamnă a pune automat ceva într-o cutie”.

„Îți vei aminti că Java are tipuri care moștenesc clasa Object, precum și tipuri primitive. Dar se dovedește că lucrurile convenabile precum colecțiile și genericele funcționează doar cu tipurile care moștenesc Object.”

„Atunci s-a luat decizia de a face un omolog non-primitiv de fiecare tip primitiv”.

Tipul primitiv Omologul neprimitiv
octet octet
mic de statura Mic de statura
int Întreg
lung Lung
pluti Pluti
dubla Dubla
boolean boolean
char Caracter
gol Vidul

„Dar este foarte incomod să faci o conversie între aceste tipuri tot timpul:”

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

„Mai ales când lucrezi direct cu colecții:”

Exemplu
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

„De aceea, creatorii Java au inventat „autoboxing” de tipuri primitive și „unboxing” pentru omologii lor non-primitivi.”

"Iată cum funcționează:

Ceea ce vedeți Ce se întâmplă cu adevărat
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

"Totul este simplu. Puteți atribui tipuri int și Integer unul altuia, iar compilatorul se ocupă de orice altceva."

— E foarte convenabil.

— Da. Dar există nuanțe despre care voi vorbi mai târziu.