Как мне конвертировать из int в Long в Java? - PullRequest
196 голосов
/ 20 августа 2009

Я постоянно нахожу, что и у 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.

Ответы [ 12 ]

227 голосов
/ 20 августа 2009

Обратите внимание, что есть различие между приведением к long и приведением к Long. Если вы преобразуете в long (примитивное значение), тогда оно должно автоматически помещаться в Long (ссылочный тип, который его переносит).

Вы также можете использовать new для создания экземпляра Long, инициализируя его значением int.

179 голосов
/ 20 августа 2009

Используйте следующее: Long.valueOf(int);.

14 голосов
/ 20 августа 2009

Если у вас уже есть int, введенное как Integer, вы можете сделать это:

Integer y = 1;
long x = y.longValue();
10 голосов
/ 02 апреля 2016

использование

new Long(your_integer);

или

Long.valueOf(your_integer);
5 голосов
/ 06 февраля 2012

У меня есть эта маленькая игрушка, которая также имеет дело с не универсальными интерфейсами. Я в порядке с этим, выбрасывая ClassCastException, если подача неправильная (ОК и счастлив)

public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}
4 голосов
/ 17 февраля 2015

В Java вы можете сделать:

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

в вашем случае это будет:

content.setSequence(new Long(i));
2 голосов
/ 08 мая 2018
 1,new Long(intValue);
 2,Long.valueOf(intValue);
2 голосов
/ 17 ноября 2016

Как насчет

int myInt = 88;

// Не компилируется

Long myLong = myInt;

// Компилирует и сохраняет ненулевой дух int. Лучший актерский состав - это вообще не актерский состав . Конечно, в вашем случае использования могут потребоваться значения Long и возможные значения NULL. Но если int или другие long - ваш единственный вход, и ваш метод может быть изменен, я бы предложил этот подход.

long myLong = myInt;

// Компилирует, это самый эффективный способ, и дает понять, что исходное значение есть и никогда не будет NULL.

Long myLong = (long) myInt;
2 голосов
/ 10 марта 2015

Мы получим длинное значение, используя 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

}
1 голос
/ 27 марта 2017
 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)
...