Ich finde sowohl hier als auch bei Google-Leuten immer wieder Probleme, von und long
nach int
und nicht umgekehrt. Ich bin mir jedoch sicher, dass ich nicht der einzige bin, der auf dieses Szenario gestoßen ist, bevor er von int
zu übergegangen ist Long
.
Die einzigen anderen Antworten, die ich gefunden habe, waren "Setze es zuerst als lang", was die Frage wirklich nicht anspricht.
Ich habe anfangs versucht zu gießen, aber ich bekomme ein " 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, bin ich ein wenig ratlos, int
da einige Inhalte als ArrayList
und eingehen und die Entität, für die ich diese Informationen speichere, die Sequenznummer als Long benötigt.
java
casting
int
long-integer
Ghosty
quelle
quelle
int
zulong
zuerst, dann zuordnenlong
zuLong
. zBint x = 2; Long y = (long)x;
Antworten:
Beachten Sie, dass es einen Unterschied zwischen einem Cast to
long
und einem Cast to gibtLong
. Wenn Sie inlong
(einen primitiven Wert) umwandeln, sollte dieser automatisch in einenLong
(den Referenztyp, der ihn umschließt) eingeschlossen werden.Alternativ können Sie
new
eine Instanz von erstellenLong
und mit demint
Wert initialisieren .quelle
Long
jedes Mal ein neues Objekt erstellt werden muss.Long.valueOf()
(wenn ich mich richtig erinnere), also würde es überhaupt keinen Unterschied geben. Mein Kommentar war eine Antwort auf die Antwort, nicht auf Ihren Kommentar.Verwenden Sie Folgendes :
Long.valueOf(int);
.quelle
Long.valueOf(int) !!
Integer
Dose, was er gesagt hat.Wenn Sie das int bereits als Ganzzahl eingegeben haben, können Sie dies tun:
quelle
verwenden
oder
quelle
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 (OK und glücklich).
quelle
In Java können Sie Folgendes tun:
in Ihrem Fall wäre es:
quelle
Wie wäre es mit
// Wird nicht kompiliert
// Kompiliert und behält den Nicht-NULL-Geist von int bei. Die beste Besetzung ist überhaupt keine Besetzung . Natürlich kann Ihr Anwendungsfall lange und mögliche NULL-Werte erfordern. Aber wenn das int oder andere Longs Ihre einzige Eingabe sind und Ihre Methode geändert werden kann, würde ich diesen Ansatz vorschlagen.
// Kompiliert, ist der effizienteste Weg und macht deutlich, dass der Quellwert NULL ist und niemals NULL sein wird.
quelle
Wir werden den langen Wert unter Verwendung der
Number
Referenz erhalten.Es funktioniert für alle Zahlentypen, hier ist ein Test:
quelle
quelle
Ich hatte große Probleme damit. Ich wollte nur:
Wobei IntervalCount ein Long ist und der JSpinner so eingestellt wurde, dass er einen Long zurückgibt. Schließlich musste ich diese Funktion schreiben:
das scheint den Trick zu tun. Keine Menge einfachen Castings, keine der oben genannten Lösungen hat bei mir funktioniert. Sehr frustrierend.
quelle
jPaidCountSpinner.getValue()
ein Objekt zurückgegeben wird, das tatsächlich a istLong
, müssen Sie definitiv nur einen(Long)
Cast vorlegen. Versuchen Sie auch, einen Haltepunkt auf Ihren Scheck fürint.class
oderlong.class
usw. zu setzen. Trifft er ihn jemals? Und wenn Sie ein zahlenähnliches Objekt haben, wird es unterstütztjava.util.Number
, also wandeln Sie es in dieses um und rufen Sie dielongValue
Methode auf. In diesem Fall müssen Sie keine Zeichenfolge verwenden. Diese Funktion könnte also erheblich vereinfacht werden, selbst wenn Sie sich auch mit Zeichenfolgen befassen müssen. (Ein Teil des Problems hier ist die schlechte Referenzdokumentation fürJSpinner
).quelle
Sobald es nur noch eine Methode gibt
Long.valueOf(long)
, wird bei Verwendung implizit vonint
bis gegossen .long
Long.valueOf(intValue)
Der klarere Weg, dies zu tun, ist
quelle
longValue
ist nur ein(long)
, also ist das einzige, was Sie hier "gewinnen"Integer
, der interne Cache.