it-swarm.com.ru

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

Спасибо!

192
Ghosty

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

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

223
Daniel Earwicker

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

173
serg

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

Integer y = 1;
long x = y.longValue();
14
saret

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

new Long(your_integer);

или же

Long.valueOf(your_integer);
10
User User

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

public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}
5
Maxim Veksler

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

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

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

content.setSequence(new Long(i));
4
daniele

Как насчет

int myInt = 88;

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

Long myLong = myInt;

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

long myLong = myInt;

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

Long myLong = (long) myInt;
2
Steven Spungin
 1,new Long(intValue);
 2,Long.valueOf(intValue);
2
Vicky

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

}
2
Thamme Gowda
 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)
1
Virendra Singh

У меня было много проблем с этим. Я только хотел:

thisBill.IntervalCount = jPaidCountSpinner.getValue();

Где IntervalCount - Long, а 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;
}

который, кажется, делает свое дело. Никакое количество простого литья, ни одно из вышеупомянутых решений не работало для меня. Очень расстраивает.

1
MaskedCoder

Как только существует метод Long.valueOf(long), приведение от int к long будет выполнено неявно в случае использования Long.valueOf(intValue).

Более понятный способ сделать это

Integer.valueOf(intValue).longValue()
0
Стас Цепа