"Cześć, Amigo!"
„Dzisiaj opowiem o autoboxingu . AutoBoxing oznacza automatyczne wkładanie czegoś do pudełka.”
„Przypomnij sobie, że Java ma typy, które dziedziczą klasę Object, a także typy pierwotne. Okazuje się jednak, że wygodne rzeczy, takie jak kolekcje i generyczne, działają tylko z typami, które dziedziczą klasę Object”.
„Wtedy podjęto decyzję o stworzeniu nieprymitywnego odpowiednika każdego prymitywnego typu”.
Typ pierwotny | Nieprymitywny odpowiednik |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
void | Void |
„Ale ciągłe przełączanie między tymi typami jest bardzo niewygodne:”
int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();
„Zwłaszcza podczas bezpośredniej pracy z kolekcjami:”
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
list.add( new Integer(i));
}
„Dlatego twórcy Javy wymyślili «autoboxing» prymitywnych typów ich i„ unboxing ”do ich nieprymitywnych odpowiedników”.
"Oto jak to działa:
Co widzisz | Co naprawdę się dzieje |
---|---|
|
|
|
|
|
|
|
|
„To wszystko jest proste. Możesz przypisać sobie typy int i Integer, a kompilator zajmie się całą resztą”.
„To bardzo wygodne”.
– Tak. Ale są pewne niuanse, o których opowiem później.
GO TO FULL VERSION