Kiedy jest konieczne korzystanie z autoboxingu oraz unboxingu?

0

jwt. Pytam, bo właśnie o tym czytam.

5

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".

0

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; 
2

@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>

1
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);
    }
0

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ść.

1

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1