Ciągle znajduję zarówno tutaj, jak i w Google, którzy mają problemy z przejściem long
do, int
a nie na odwrót. Jednak jestem pewien, że nie jestem jedyną osobą, która ma uruchomić w tym scenariuszu przed pójściem od int
celu Long
.
Jedyne inne odpowiedzi, jakie znalazłem, to „po prostu ustaw jako długie”, co tak naprawdę nie odnosi się do pytania.
Początkowo próbowałem przesyłać, ale dostaję „ 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);
}
Jak możesz sobie wyobrazić, jestem trochę zakłopotany, utknąłem przy użyciu, int
ponieważ niektóre treści przychodzą jako, ArrayList
a jednostka, dla której przechowuję te informacje, wymaga numeru sekwencyjnego jako Długiego.
java
casting
int
long-integer
Ghosty
źródło
źródło
int
dolong
, a następnie przypisaćlong
doLong
. np.int x = 2; Long y = (long)x;
Odpowiedzi:
Zauważ, że istnieje różnica między rzutem na
long
a rzutowaniem naLong
. Jeśli rzutujesz nalong
(prymitywną wartość), to powinna ona zostać automatycznie zapakowana w poleLong
(typ odwołania, który ją otacza).Alternatywnie można użyć
new
do utworzenia instancjiLong
, inicjując jąint
wartością.źródło
Long
każdym razem tworzyć nowy obiekt.Long.valueOf()
(o ile dobrze pamiętam), więc nie byłoby żadnej różnicy. Mój komentarz był odpowiedzią na odpowiedź, a nie na twój komentarz.Użyj następujących:
Long.valueOf(int);
.źródło
Long.valueOf(int) !!
Integer
can, tak powiedział.Jeśli masz już liczbę całkowitą wpisaną jako Liczba całkowita, możesz to zrobić:
źródło
posługiwać się
lub
źródło
Mam tę małą zabawkę, która również zajmuje się nietypowymi interfejsami. Nie przeszkadza mi zgłoszenie wyjątku ClassCastException, jeśli plik danych jest nieprawidłowy (OK i szczęśliwy)
źródło
W Javie możesz:
w twoim przypadku byłoby to:
źródło
Co powiesz na
// Nie skompiluje się
// Kompiluje i zachowuje ducha int nie-NULL. Najlepsza obsada jest nie oddanych w ogóle . Oczywiście, twój przypadek użycia może wymagać Długich i możliwych wartości NULL. Ale jeśli int lub inne długie są twoim jedynym wejściem, a twoja metoda może być modyfikowana, sugerowałbym to podejście.
// Kompiluje, jest najbardziej wydajnym sposobem i wyjaśnia, że wartość źródłowa jest i nigdy nie będzie NULL.
źródło
Dłuższą wartość uzyskamy, korzystając z
Number
referencji.Działa dla wszystkich typów liczb, oto test:
źródło
źródło
Miałem z tym wiele problemów. Chciałem tylko:
Gdzie IntervalCount jest Long, a JSpinner został ustawiony na zwrócenie Long. W końcu musiałem napisać tę funkcję:
co wydaje się załatwić sprawę. Brak ilości prostego odlewania, żadne z powyższych rozwiązań nie działało dla mnie. Bardzo frustrujące.
źródło
jPaidCountSpinner.getValue()
zwróci Obiekt, który jest w rzeczywistościLong
, zdecydowanie wystarczy postawić(Long)
gips na pierwszym planie . Także spróbuj umieścić punkt przerwania na czeku zaint.class
lublong.class
itd. Czy kiedykolwiek uderzył go? A jeśli masz obiekt podobny do liczby, będzie on obsługiwałjava.util.Number
, więc rzuć go na to i wywołajlongValue
metodę. W takim przypadku nie trzeba przechodzić przez łańcuch. Tak więc tę funkcję można nieco uprościć, nawet jeśli trzeba również radzić sobie z łańcuchami. (Część problemu tutaj to zła dokumentacja referencyjnaJSpinner
).źródło
Gdy tylko będzie dostępna metoda
Long.valueOf(long)
, rzutowanie zint
nalong
zostanie wykonane domyślnie w przypadku użyciaLong.valueOf(intValue)
.Bardziej wyraźnym sposobem na to jest
źródło
longValue
jest po prostu(long)
, więc jedyną rzeczą, którą „zyskujesz”, jestInteger
wewnętrzna pamięć podręczna.