如何从int转换为长期在Java中?
-
19-09-2019 - |
题
我一直在这里找到两者兼备,并从烦恼去long
到int
,而不是周围的其他方法谷歌的人。但我敢肯定,我不是以前已经从int
去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
和铸造到Long
之间的差。如果投射到long
(原始值),那么它应该是自动盒装到Long
(即包装它引用类型)。
您可以替代地使用new
创建Long
的一个实例,与int
值对其进行初始化。
其他提示
使用以下: Long.valueOf(int);
。
如果您已经拥有类型为一个整数,你可以这样做的INT:
Integer y = 1;
long x = y.longValue();
使用结果
new Long(your_integer);
或
Long.valueOf(your_integer);
我有这样的小玩具,这也与非通用接口协议。 我行与饲料是否错误(OK快乐)将其掷一个ClassCastException
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
}
如何关于
int myInt = 88;
//不会编译
Long myLong = myInt;
//编译,并保留INT的非空的精神。最好的投的是没有投在所有的。当然,你的使用情况可能需要很长的和可能的空值。但是,如果int或其它多头是你唯一的输入,你的方法可以被修改,我建议这种方法。
long myLong = myInt;
//编译,是最有效的方式,并且清楚地表明,源值,是也永远不会是NULL。
Long myLong = (long) myInt;
1,new Long(intValue);
2,Long.valueOf(intValue);
我的麻烦,这是一个很大。我只是想:
thisBill.IntervalCount = jPaidCountSpinner.getValue();
其中IntervalCount是一个长期的,并且JSpinner的设定为返回一个长。最终我不得不写这样的功能:
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;
}
这似乎可以解决问题。简单铸造再多,没有以上的解决方案为我工作。非常令人沮丧。
//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)
,从int
投射到long
将在使用Long.valueOf(intValue)
的情况下隐含地完成。
在更清晰的方式来做到这一点是
Integer.valueOf(intValue).longValue()