Wie konvertiere ich von int nach Long in Java?
-
19-09-2019 - |
Frage
ich beide immer wieder zu finden, hier und Google Menschen, die Probleme von long
geht um in die andere Richtung zu int
und nicht. Aber ich bin sicher, ich bin nicht der einzige, der in diesem Szenario ausgeführt wurde, bevor von int
zu Long
gehen.
Die einzigen anderen Antworten, die ich gefunden habe, wurden „es einfach so lange gesetzt, an erster Stelle“, die wirklich nicht die Frage befassen.
ich zunächst versucht, Casting, aber ich erhalte eine "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);
}
Wie Sie sich vorstellen können, ich bin ein wenig verwirrt, ich bin mit int
stecken, da einige Inhalte als ArrayList
kommen in und das Unternehmen, für die ich diese Info bin Speicherung erfordert die Sequenznummer als Long.
Lösung
Beachten Sie, dass es einen Unterschied zwischen einer Besetzung long
und einer Besetzung Long
. Wenn Sie (Grundwert) long
werfen dann sollte es automatisch zu einem Long
boxed (der Referenz-Typ, die es umschließt).
Sie können alternativ new
eine Instanz von Long
zu schaffen, mit dem int
Wert initialisiert wird.
Andere Tipps
Verwenden Sie die folgenden Schritte aus: Long.valueOf(int);
.
Wenn Sie bereits die int eingegeben als Integer Sie dies tun können:
Integer y = 1;
long x = y.longValue();
verwenden
new Long(your_integer);
oder
Long.valueOf(your_integer);
Ich habe dieses kleine Spielzeug, das auch mit nicht generischen Schnittstellen befaßt. Ich bin OK mit ihm eine Classcast wenn füttert falsch (OK und glücklich)
Werfenpublic class TypeUtil {
public static long castToLong(Object o) {
Number n = (Number) o;
return n.longValue();
}
}
In Java können Sie tun:
int myInt=4;
Long myLong= new Long(myInt);
in Ihrem Fall wäre es:
content.setSequence(new Long(i));
Wir werden den Long-Wert erhalten, indem Number
Referenz.
public static long toLong(Number number){
return number.longValue();
}
Es funktioniert für alle Nummerntypen, hier ist ein 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
}
Wie über
int myInt = 88;
// Wird nicht kompilieren
Long myLong = myInt;
// Compiliert, und behält sich das Nicht-NULL Geist der int. Die beste Besetzung ist keine Besetzung überhaupt . Natürlich Lange und mögliche NULL-Werte kann Ihr Anwendungsfall benötigen. Aber wenn der int oder andere sehnt Ihr nur eingegeben werden, und Ihre Methode kann geändert werden, würde ich diesen Ansatz vor.
long myLong = myInt;
// Compiliert, ist der effizienteste Weg, und macht deutlich, dass der Quellenwert, ist und wird niemals NULL sein.
Long myLong = (long) myInt;
1,new Long(intValue);
2,Long.valueOf(intValue);
Ich hatte einen sehr viel Mühe mit diesem. Ich wollte nur:
thisBill.IntervalCount = jPaidCountSpinner.getValue();
Wo IntervalCount ein lang ist, und die JSpinner eingestellt war eine lange zurückzukehren. Schließlich hatte ich diese Funktion schreiben:
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;
}
, die scheint, den Trick zu tun. Keine Menge von einfachen Gießen, keine der oben genannten Lösungen für mich gearbeitet. Sehr frustrierend.
//Suppose you have int and you wan to convert it to Long
int i=78;
//convert to Long
Long l=Long.valueOf(i)
Sobald es nur Verfahren Long.valueOf(long)
, von int
gegossen wird long
implizit im Fall der Verwendung Long.valueOf(intValue)
erfolgen.
Je klarer Weg, dies zu tun ist,
Integer.valueOf(intValue).longValue()