我如何从int转换为长在Java?

我一直在这里和谷歌上发现从longint的人都有麻烦,而不是相反。然而,我相信我不是唯一一个在从intLong之前遇到这种情况的人。

我找到的唯一其他答案是“一开始就把它设置为长”,这并没有解决这个问题。

我最初尝试了类型转换,但我得到了“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。

699025 次浏览

注意,转换到long和转换到Long之间是有区别的。如果强制转换为long(一个基本值),那么它应该自动装箱为Long(包装它的引用类型)。

你也可以使用new创建一个Long实例,用int值初始化它。

使用下面的语句:Long.valueOf(int);

如果你已经有int类型为Integer,你可以这样做:

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

我在这方面遇到了很大的麻烦。我只是想:

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

这似乎很管用。再多简单的铸造,上面的解决方案都不适合我。非常令人沮丧。

我有一个小玩具,它也处理非泛型接口。 我可以接受它抛出一个ClassCastException如果饲料错误(OK和快乐)

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

在Java中,你可以做:

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

在你的情况下,它将是:

content.setSequence(new Long(i));

我们可以通过使用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


}

使用< br >

new Long(your_integer);

Long.valueOf(your_integer);

如何

int myInt = 88;

//不编译

Long myLong = myInt;

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

long myLong = myInt;

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

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

只要只有Long.valueOf(long)方法,在使用Long.valueOf(intValue)的情况下,将隐式地从int转换到long

更明确的做法是

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

从Android Studio lint check:删除不必要的装箱:所以,unboxing是:

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

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

(long)intValue

原始到原始。