Hoe converteer ik van int naar Long in Java?

Ik kom zowel hier als op Google mensen tegen die problemen hebben om van longnaar intte gaan en niet andersom. Maar ik weet zeker dat ik niet de enige ben die tegen dit scenario is aangelopen voordat hij van intnaar longging.

De enige andere antwoorden die ik heb gevonden, waren “Zet het gewoon als Lang in de eerste plaats”, wat de vraag niet echt beantwoordt.

Ik heb eerst geprobeerd te casten, maar ik krijg de melding “Cannot cast from int to Long

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

Zoals je je kunt voorstellen ben ik een beetje perplex, ik zit vast met het gebruik van intomdat er wat inhoud binnenkomt als een ArrayListen de entiteit waarvoor ik’ Voor het opslaan van deze informatie is het volgnummer een Long nodig.


Antwoord 1, autoriteit 100%

Merk op dat er een verschil is tussen een cast tot longen een cast tot long. Als u cast naar long(een primitieve waarde), moet deze automatisch worden ingekaderd in een long(het referentietype dat het omhult).

U kunt ook newgebruiken om een instantie van longte maken, waarbij u deze initialiseert met de waarde int.


Antwoord 2, autoriteit 82%

Gebruik het volgende: Long.valueOf(int);.


Antwoord 3, autoriteit 9%

Als je de int al als een geheel getal hebt getypt, kun je dit doen:

Integer y = 1;
long x = y.longValue();

Antwoord 4, autoriteit 7%

gebruik

new Long(your_integer);

of

Long.valueOf(your_integer);

Antwoord 5, autoriteit 4%

1,new Long(intValue);
 2,Long.valueOf(intValue);

Antwoord 6, autoriteit 3%

Hoe zit het met

int myInt = 88;

// Zal niet compileren

long myLong = myInt;

// Compileert en behoudt de niet-NULL-geest van int. De beste castis helemaal geen cast. Natuurlijk kan uw use-case lange en mogelijke NULL-waarden vereisen. Maar als de int, of andere longen je enige input zijn, en je methode kan worden aangepast, zou ik deze benadering aanraden.

long myLong = myInt;

// Compileert, is de meest efficiënte manier en maakt duidelijk dat de bronwaarde NULL is en nooit zal zijn.

Long myLong = (long) myInt;

Antwoord 7, autoriteit 2%

Ik heb dit kleine speeltje, dat zich ook bezighoudt met niet-generieke interfaces.
Ik vind het oké om een ClassCastException te gooien als de feed verkeerd is (OK en gelukkig)

public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}

Antwoord 8, autoriteit 2%

In Java kunt u het volgende doen:

int myInt=4;
 Long myLong= new Long(myInt);

in jouw geval zou dat zijn:

content.setSequence(new Long(i));

Antwoord 9

We krijgen de lange waarde door de Numberreferentie te gebruiken.

public static long toLong(Number number){
    return number.longValue();
}

Het werkt voor alle soorten getallen, hier is een test:

public static void testToLong() throws Exception {
    assertEquals(0l, toLong(0));   // an int
    assertEquals(0l, toLong((short)0)); // a short
    assertEquals(0l, toLong(0l)); // a long
    assertEquals(0l, toLong((long) 0)); // another long
    assertEquals(0l, toLong(0.0f));  // a float
    assertEquals(0l, toLong(0.0));  // a double
}

Antwoord 10

Ik had hier veel moeite mee. Ik wilde gewoon:

thisBill.IntervalCount = jPaidCountSpinner.getValue();

Waar IntervalCount een Long is en de JSpinner is ingesteld om een Long te retourneren. Uiteindelijk moest ik deze functie schrijven:

   public static final Long getLong(Object obj) throws IllegalArgumentException {
    Long rv;
    if((obj.getClass() == Integer.class) || (obj.getClass() == Long.class) || (obj.getClass() == Double.class)) {
        rv = Long.parseLong(obj.toString());
    }
    else if((obj.getClass() == int.class) || (obj.getClass() == long.class) || (obj.getClass() == double.class)) {
        rv = (Long) obj;
    }
    else if(obj.getClass() == String.class) {
        rv = Long.parseLong(obj.toString());
    }
    else {
        throw new IllegalArgumentException("getLong: type " + obj.getClass() + " = \"" + obj.toString() + "\" unaccounted for");
    }
    return rv;
}

wat lijkt te werken. Geen enkele hoeveelheid eenvoudig gieten, geen van de bovenstaande oplossingen werkte voor mij. Erg frustrerend.


Antwoord 11

//Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)

Antwoord 12

Voorgesteld door Android Studio lintcontrole: verwijder onnodig boksen: dus unboxing is:

public  static  long  integerToLong (int minute ){
    int delay = minute*1000;
    long diff = (long) delay;
    return  diff ; 
}

Antwoord 13

Zodra er alleen nog methode Long.valueOf(long)is, wordt casten van intnaar longimpliciet gedaan in het geval van met behulp van Long.valueOf(intValue).

De duidelijkere manier om dit te doen is

Integer.valueOf(intValue).longValue()

Other episodes