Ako v Jave prevediem z int na Long?

Stále nachádzam ľudí, ktorí majú problémy s prechodom z long na int a nie naopak. Som si však istý, že nie som jediný, kto sa s týmto scenárom stretol pred prechodom z int na Long.

Jediné ďalšie odpovede, ktoré som našiel, boli "Stačí ho v prvom rade nastaviť ako Long", čo naozaj'nerieši otázku.

Pôvodne som sa pokúsil o castovanie, ale dostal som "Nemôžem castovať z int na Long"

for (int i = 0; i < myArrayList.size(); ++i ) {
    content = new Content();
    content.setDescription(myArrayList.get(i));
    content.setSequence((Long) i);
    session.save(content);
}

Ako si viete predstaviť, som trochu zmätený, zasekol som sa pri používaní int, pretože časť obsahu prichádza ako ArrayList a entita, pre ktorú tieto informácie ukladám, vyžaduje poradové číslo ako Long.

Riešenie

Všimnite si, že je rozdiel medzi obsadením na long a obsadením na Long. Ak vykonáte cast na long (primitívnu hodnotu), potom by sa mala automaticky zaškatuľkovať na Long (referenčný typ, ktorý ju obalí).

Alternatívne môžete použiť new na vytvorenie inštancie Long a inicializovať ju hodnotou int.

Komentáre (8)

Použite nasledujúce: Long.valueOf(int);.

Komentáre (8)

Ak už máte int napísaný ako Integer, môžete to urobiť:

Integer y = 1;
long x = y.longValue();
Komentáre (0)