wake-up-neo.com

Wie konvertiere ich in Java von int zu Long?

Ich finde immer wieder sowohl bei Google als auch bei Google, dass es Probleme gibt, die von long zu int gehen, und nicht umgekehrt. Ich bin mir jedoch sicher, dass ich nicht der einzige bin, der dieses Szenario kennt, bevor er von int zu Long wechselt.

Die einzigen anderen Antworten, die ich gefunden habe, waren "Setzen Sie es einfach nur so lange", was die Frage wirklich nicht anspricht.

Kann mir hier jemand helfen? Ich habe anfangs versucht, aber ich bekomme einen "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, dass ich etwas ratlos bin, verwende ich int, da einige Inhalte als ArrayList erscheinen und die Entität, für die ich diese Informationen speichere, die Sequenznummer als Long benötigt.

Vielen Dank!

192
Ghosty

Beachten Sie, dass es einen Unterschied zwischen einer Umwandlung in long und einer Umwandlung in Long gibt. Wenn Sie in long (einen primitiven Wert) umwandeln, sollte er automatisch in eine Long (den Verweistyp, der ihn umschließt) gesetzt werden.

Sie können alternativ new verwenden, um eine Instanz von Long zu erstellen und sie mit dem Wert int zu initialisieren.

223

Verwenden Sie Folgendes: Long.valueOf(int); .

173
serg

Wenn Sie den int bereits als Integer eingegeben haben, können Sie Folgendes tun

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

benutzen 

new Long(your_integer);

oder

Long.valueOf(your_integer);
10
User User

Ich habe dieses kleine Spielzeug, das sich auch mit nicht generischen Schnittstellen befasst ... Ich bin damit einverstanden, eine ClassCastException auszulösen, wenn der Feed falsch ist

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

In Java können Sie Folgendes tun:

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

in Ihrem Fall wäre es: 

content.setSequence(new Long(i));
4
daniele

Wie wäre es mit

int myInt = 88;

// Wird nicht kompiliert

Long myLong = myInt;

// Kompiliert und behält den Nicht-NULL-Geist von int. Die besten Besetzung ist überhaupt keine Besetzung . Natürlich kann Ihr Anwendungsfall Long-Werte und mögliche NULL-Werte erfordern. Wenn das int oder die anderen longs Ihre einzige Eingabe sind und Ihre Methode geändert werden kann, würde ich diesen Ansatz vorschlagen. 

long myLong = myInt;

// Kompiliert ist die effizienteste Methode und macht deutlich, dass der Quellwert NULL ist und niemals sein wird. 

Long myLong = (long) myInt;
2
Steven Spungin
 1,new Long(intValue);
 2,Long.valueOf(intValue);
2
Vicky

Wir erhalten den langen Wert mit Number.

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

Es funktioniert für alle Nummernarten, 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

}
2
Thamme Gowda
 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)
1
Virendra Singh

Ich hatte große Probleme damit. Ich wollte nur:

thisBill.IntervalCount = jPaidCountSpinner.getValue();

Wobei IntervalCount ein Long ist und der JSpinner so eingestellt wurde, dass er einen Long zurückgibt. Irgendwann musste 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;
}

das scheint den Trick zu tun. Kein einfaches Gießen, keine der oben genannten Lösungen funktionierte für mich. Sehr frustrierend.

1
MaskedCoder

Sobald es nur die Methode Long.valueOf(long) gibt, wird die Umwandlung von int in long implizit durchgeführt, wenn Long.valueOf(intValue) verwendet wird.

Der klarere Weg, dies zu tun, ist

Integer.valueOf(intValue).longValue()
0