我有这段代码给了我一个错误?如何将对象转换为长数据类型java
public int part(Object key) {
long clientId = (long) key;
...
}
下面是错误:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
不知道为什么它会抛出异常。
我有这段代码给了我一个错误?如何将对象转换为长数据类型java
public int part(Object key) {
long clientId = (long) key;
...
}
下面是错误:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
不知道为什么它会抛出异常。
正如在评论中已经解释的那样,即使原语本身允许强制转换,Java也不允许将一个基本包装类型转换为另一种类型的原语。
你的异常stacktrace显示key参数是一个Integer对象。如果是这样,那么简单地使用专门为这种类型的转换的创建整型的方法:
long clientId = ((Number) key).longValue();
你最好非常肯定的说,关键是总是数量的目的,是不为空的这个工作。在调用此方法之前,您可能需要测试null。
谢谢你做的气垫船。我被捆绑了一段时间。 –
你不能投Integer
到Long
,即使你可以转换从int
到long
。这会为你工作:如果整数为null
Long clientId = new Long(key)
NPE被抛出。尽管如此,我将把错误处理留给你。 :)
或者,你可以使用:
Long clientId = Long.valueOf(key.longValue());
'java.lang.Integer' _cannot_被转换为'java.lang.Long'。 –