Как преобразовать из 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.

Ответ 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()