Ik kom zowel hier als op Google mensen tegen die problemen hebben om van long
naar int
te gaan en niet andersom. Maar ik weet zeker dat ik niet de enige ben die tegen dit scenario is aangelopen voordat hij van int
naar long
ging.
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 int
omdat er wat inhoud binnenkomt als een ArrayList
en 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 long
en 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 new
gebruiken om een instantie van long
te 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 Number
referentie 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 int
naar long
impliciet gedaan in het geval van met behulp van Long.valueOf(intValue)
.
De duidelijkere manier om dit te doen is
Integer.valueOf(intValue).longValue()