Как преобразовать из int в Long в Java?
Я постоянно нахожу, что и у Google, и у людей возникают проблемы, переходящие от long
к int
а не наоборот. Тем не менее, я уверен, что я не единственный, кто столкнулся с этим сценарием, прежде чем перейти от int
к Long
.
Единственными другими ответами, которые я нашел, были "Просто установите его как Long", что на самом деле не решает вопрос.
Сначала я пробовал кастовать, но получаю " 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);
}
Как вы можете себе представить, я немного озадачен, я застрял, используя int
поскольку некоторый контент поступает в виде ArrayList
а для сущности, для которой я храню эту информацию, требуется порядковый номер Long.
Ответы
Ответ 1
Обратите внимание, что существует разница между литой до long
и литой до long
. Если вы добавили к long
(примитивному значению), то он должен быть автоматически помещен в поле long
(ссылочный тип, который его обертывает).
В качестве альтернативы вы можете использовать new
для создания экземпляра long
, инициализируя его значением int
.
Ответ 2
Используйте следующее: Long.valueOf(int);
.
Ответ 3
Если у вас уже есть int, введенный как Integer, вы можете сделать это:
Integer y = 1;
long x = y.longValue();
Ответ 4
использовать
new Long(your_integer);
или
Long.valueOf(your_integer);
Ответ 5
У меня есть эта маленькая игрушка, которая также касается не общих интерфейсов.
Я в порядке с этим, бросая исключение ClassCastException, если неверный канал (ОК и счастлив)
public class TypeUtil {
public static long castToLong(Object o) {
Number n = (Number) o;
return n.longValue();
}
}
Ответ 6
В Java вы можете:
int myInt=4;
Long myLong= new Long(myInt);
в вашем случае это будет:
content.setSequence(new Long(i));
Ответ 7
Мы получим длинное значение, используя ссылку Number
.
public static long toLong(Number number){
return number.longValue();
}
Он работает для всех типов номеров, вот тест:
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
}
Ответ 8
Как о
int myInt = 88;
//Не компилируется
Long myLong = myInt;
//Скомпилирует и сохраняет не-NULL дух int. Лучший актер не снимается. Конечно, для вашего случая использования могут потребоваться длинные и возможные значения NULL. Но если int или другие longs - ваш единственный вход, и ваш метод может быть изменен, я бы предложил этот подход.
Long myLong = myInt;
//Компилирует, является наиболее эффективным способом и дает понять, что значение источника, и никогда не будет NULL.
Long myLong = (long) myInt;
Ответ 9
1,new Long(intValue);
2,Long.valueOf(intValue);
Ответ 10
У меня было много проблем с этим. Я просто хотел:
thisBill.IntervalCount = jPaidCountSpinner.getValue();
Где IntervalCount длинный, и JSpinner был настроен на возвращение Long. В конце концов мне пришлось написать эту функцию:
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;
}
который, кажется, делает трюк. Никакого количества простого литья, ни один из вышеперечисленных решений не работал у меня. Очень расстраивает.
Ответ 11
//Suppose you have int and you wan to convert it to Long
int i=78;
//convert to Long
Long l=Long.valueOf(i)
Ответ 12
Как только существует метод Long.valueOf(long)
, приведение от int
к long
будет выполняться неявно в случае использования Long.valueOf(intValue)
.
Более понятный способ сделать это
Integer.valueOf(intValue).longValue()