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

1 голос
/ 25 мая 2010

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

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;
}

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

0 голосов
/ 27 марта 2018

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

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

Integer.valueOf(intValue).longValue()
...