jwt. Pytam, bo właśnie o tym czytam.
Java póki co nie wspiera generyków na prymitywach, więc jeśli chcesz użyć typu prostego jako parametru generycznego, to musisz go autoboxować. Dodatkowo typy primitywne nie mogą trzymać "nulla".
Kiedy jest konieczne korzystanie z autoboxingu oraz unboxingu? Można wg mówić o koniecznym korzystaniu z autoboxingu ? Ja traktuje mechanizm autoboxingu jako duże uproszczenie w sytuacjach kiedy chcę zamiennie stosować obiekt względem prymitywa i odwrotnie. Kiedy to jest konieczne ? no nie musisz używać autoboxingu, możesz samemu deklarować obiekt( ale to jest chyba overkill)
int x = 199;
Integer ox = new Integer(x);
Integer ox = x;
@krancki robienie new Integer(x)
w takiej sytuacji to słaby pomysł, bo uniemożliwiasz takie rzeczy jak korzystanie z cache. Powinieneś zrobić Integer ox = x;
zamiast tego.
Można wg mówić o koniecznym korzystaniu z autoboxingu
Można, patrz mój komentarz na temat generyków. Nie zrobisz List<int>
krancki napisał(a):
Kiedy jest konieczne korzystanie z autoboxingu oraz unboxingu? Można wg mówić o koniecznym korzystaniu z autoboxingu ? Ja traktuje mechanizm autoboxingu jako duże uproszczenie w sytuacjach kiedy chcę zamiennie stosować obiekt względem prymitywa i odwrotnie. Kiedy to jest konieczne ? no nie musisz używać autoboxingu, możesz samemu deklarować obiekt( ale to jest chyba overkill)
int x = 199; Integer ox = new Integer(x); Integer ox = x;
Autoboxing nie robi pod spodem new Integer(x)
tylko Integer.valueOf(x)
Przykładowy kod metody valueOf
to:
@HotSpotIntrinsicCandidate
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Cześć.
W nawiązaniu do typów generycznych na prymitywach to jako ciekawostkę mogę dodać, że od dłuższego czasu trwają prace nad taką funkcjonalnością. Typy generyczne na prymitywach wchodzą w skład projektu Valhalla. Niestety obecnie nie znamy jeszcze konkretnego oficjalnego release'u Javy, w którym zobaczymy taką funkcjonalność.
Korzystanie z autoboxingu/unboxingu? Przecież to się samo dzieje :D Nierozumiem do końca jak rozumieć twoje pytanie. Lepiej zadać pytanie który typ kiedy używać i dlaczego.