Domyslna wartośc po odpakowaniu NUmber

0

Zalozmy, ze mam obiekt Number vv z jakas wartoscia.

w przypadku if'a i equalsa moge zrobic:

vv.intValue == 5 (to bedzie ok)

ale co sie stanie gdy zrobie:

vv.equals(5)

jak tu zadziala odpakowanie ?

0

Nie zadziala odpakowanie, zadziala pakowanie - 5 zostanie spakowane do Integera, ktory jest Numberem. To czy bedzie true czy false zalezy od tego jaki konkretny typ bedzie miec vv, ale mozesz sama sprawdzic.

0

wlasnie sprawdzam, przerobilam juz na pierwsza wersje dziala ok.

Wczesniej druga mialam w kodzie i po zbudowanie apki na tomcacie dzialalo zle, a sama syso w kodzie zwracalo ok - confused :P

vv ma typ Numeric (nie konkretny jak Integer itp)

0
magda88 napisał(a):

vv ma typ Numeric (nie konkretny jak Integer itp)

Zakladam ze chodzilo o Number nie o Numeric. I jesli tak, to bardzo sie mylisz, Number to klasa abstrakcyjna i nie moze byc zadnej instancji klasy Number, tylko podklas.

0

racja, Number, rzeczywiscie abstrakcyjna.

Teraz nie rozumiem, taki kod:

Number vv= (Number) 5;

vv.equals(5) - dziala czasem zle. Juz to usunalem, ale zastanaiwam sie czemu tak to sie zle zachowuje ?

a

vv.intValue() == 5 - dziala zawsze ok

0
magda88 napisał(a):

racja, Number, rzeczywiscie abstrakcyjna.

Teraz nie rozumiem, taki kod:

Number vv= (Number) 5;

vv.equals(5) - dziala czasem zle. Juz to usunalem, ale zastanaiwam sie czemu tak to sie zle zachowuje ?

a

vv.intValue() == 5 - dziala zawsze ok

Number vv = 5 - wystarczajaco dobre, to tworzy Integera, a ten jest podklasa Number wiec nie musisz rzutowac.
Poza tym cos krecisz, oto implementacja Integer.equals:

public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

Czyli inValue jest rowniez uzyte. Moim zdaniem nie do konca panujesz nad tym co trzyba zmienna vv: raz Integer, raz moze Long a raz cos innego.

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