如何在Java中从int转换为Long?

时间:2009-08-19 21:01:00

标签: java casting int long-integer

我一直在这里找到这两个人,谷歌人遇到麻烦从longint而不是相反。但是我确信在从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。

13 个答案:

答案 0 :(得分:226)

请注意,投射到long和投射到Long之间存在差异。如果转换为long(原始值),则它应自动加框为Long(包装它的引用类型)。

您也可以使用new创建Long的实例,并使用int值对其进行初始化。

答案 1 :(得分:176)

使用以下内容:Long.valueOf(int);

答案 2 :(得分:14)

如果您已将int类型化为Integer,则可以执行以下操作:

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

答案 3 :(得分:10)

使用

new Long(your_integer);

Long.valueOf(your_integer);

答案 4 :(得分:5)

我有这个小玩具,也处理非通用接口。 如果输入错误(好的和快乐的)

,我可以抛出ClassCastException
public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}

答案 5 :(得分:4)

在Java中你可以这样做:

 int myInt=4;
 Long myLong= new Long(myInt);
在你的情况下,它将是:

content.setSequence(new Long(i));

答案 6 :(得分:2)

我们将使用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

}

答案 7 :(得分:2)

怎么样

int myInt = 88;

//无法编译

Long myLong = myInt;

//编译并保留int的非NULL精神。最好的演员 根本没有演员。当然,您的用例可能需要Long和可能的NULL值。但是如果int或其他long是你唯一的输入,并且你的方法可以被修改,我会建议这种方法。

long myLong = myInt;

//编译,是最有效的方法,并清楚地表明源值是,永远不会是NULL。

Long myLong = (long) myInt;

答案 8 :(得分:2)

 1,new Long(intValue);
 2,Long.valueOf(intValue);

答案 9 :(得分:1)

我遇到了很多麻烦。我只是想:

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

似乎可以解决问题。没有多少简单的铸造,上述解决方案都不适合我。非常令人沮丧。

答案 10 :(得分:1)

 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)

答案 11 :(得分:1)

建议从 Android Studio lint 检查:删除不必要的装箱:所以,拆箱是:

public  static  long  integerToLong (int minute ){
    int delay = minute*1000;
    long diff = (long) delay;
    return  diff ; 
}

答案 12 :(得分:0)

只有方法Long.valueOf(long),在使用int的情况下,long投射到Long.valueOf(intValue)将会隐式执行。

更明确的方法是

Integer.valueOf(intValue).longValue()