2016-11-01 60 views
1

我有这段代码给了我一个错误?如何将对象转换为长数据类型java

public int part(Object key) { 
    long clientId = (long) key; 
    ... 
} 

下面是错误:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long 

不知道为什么它会抛出异常。

+4

'java.lang.Integer' _cannot_被转换为'java.lang.Long'。 –

回答

4

正如在评论中已经解释的那样,即使原语本身允许强制转换,Java也不允许将一个基本包装类型转换为另一种类型的原语。

你的异常stacktrace显示key参数是一个Integer对象。如果是这样,那么简单地使用专门为这种类型的转换的创建整型的方法:

long clientId = ((Number) key).longValue(); 

你最好非常肯定的说,关键是总是数量的目的,是不为空的这个工作。在调用此方法之前,您可能需要测试null。

+1

谢谢你做的气垫船。我被捆绑了一段时间。 –

1

你不能投IntegerLong,即使你可以转换从intlong。这会为你工作:如果整数为null

Long clientId = new Long(key) 

NPE被抛出。尽管如此,我将把错误处理留给你。 :)

或者,你可以使用:

Long clientId = Long.valueOf(key.longValue()); 
相关问题