245

我一直在这里和谷歌上发现有麻烦的人,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因为一些内容以 an 形式进入ArrayList,而我存储此信息的实体需要将序列号作为 Long。

4

14 回答 14

257

long请注意,cast to和 cast to之间是有区别的Long。如果您转换为long(原始值),那么它应该自动装箱为Long(包装它的引用类型)。

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

于 2009-08-19T21:03:17.303 回答
216

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

于 2009-08-19T21:08:25.220 回答
24

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

Integer y = 1;
long x = y.longValue();
于 2009-08-20T09:54:25.367 回答
18

利用

new Long(your_integer);

或者

Long.valueOf(your_integer);
于 2016-04-02T14:10:36.647 回答
10
 1,new Long(intValue);
 2,Long.valueOf(intValue);
于 2018-05-08T03:24:54.123 回答
8

怎么样

int myInt = 88;

// 不会编译

Long myLong = myInt;

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

long myLong = myInt;

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

Long myLong = (long) myInt;
于 2016-11-17T13:14:45.577 回答
6

我有这个小玩具,它也处理非通用接口。如果输入错误,我可以接受它抛出 ClassCastException(好的和高兴)

public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}
于 2012-02-06T16:56:50.950 回答
6

在 Java 中,您可以执行以下操作:

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

在您的情况下,它将是:

content.setSequence(new Long(i));
于 2015-02-17T17:15:11.940 回答
3

我们将通过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

}
于 2015-03-10T10:03:15.377 回答
2

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

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

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

于 2010-05-25T13:25:04.293 回答
2
 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)
于 2017-03-27T08:08:57.923 回答
1

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

public  static  long  integerToLong (int minute ){
    int delay = minute*1000;
    long diff = (long) delay;
    return  diff ; 
}
于 2020-12-31T19:45:13.183 回答
0

只要只有方法Long.valueOf(long),在 using 的情况下,从intto的转换long就会隐式完成Long.valueOf(intValue)

更明确的方法是

Integer.valueOf(intValue).longValue()
于 2018-03-27T11:36:23.987 回答
0

除了此处建议的其他方法外,还可以尝试以下代码。

(long)intValue

原始到原始。

于 2021-10-08T12:15:05.747 回答