"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